2010-01-09 6 views
2

Je voulais sauvegarder les mails Outlook au format msg avec la pièce jointe via C#.comment enregistrer le formulaire Outlook avec pièces jointes?

J'ai essayé le code suivant

using Outlook = Microsoft.Office.Interop.Outlook; 

private void button1_Click(object sender, EventArgs e) 
{ 

Outlook.Application app = new Microsoft.Office.Interop.Outlook.Application(); 
Outlook.NameSpace ns = app.GetNamespace("MAPI"); 
Outlook.MAPIFolder inbox = ns.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderInbox); 

foreach (Outlook.MailItem item in inbox.Items) 
{ 
    item.SaveAs(finename, Outlook.OlSaveAsType.olMSG); 
} 

} 

Il pourrait sauver le courrier comme msg, mais la partie de fixation a été retirée. méthode SaveAs avait pas d'autre alos ... :(surcharge

Si j'essaie d'enregistrer un message de perspectives, il enregistre le message ainsi que l'attachement incorporé en elle. Toute idée de comment cela peut être atteint ..?

J'utilise Net Framework 3.5 et Outolook 2007

Répondre

0

Je crois que vous devrez les enregistrer séparément.

Utilisez la propriété Pièces jointes sur la MailItem pour obtenir toutes les pièces jointes. puis boucle à travers eux et appelez SaveAsFile() pour chacune des pièces jointes

exemples lien ci-dessous sont pour base, mais il devrait fonctionner en C# et

MailItem :: Pièces jointes http://msdn.microsoft.com/en-us/library/bb207129.aspx

Pièce jointe :: SaveAsFile http://msdn.microsoft.com/en-us/library/bb219926.aspx

+0

Oui c'est une possibilité ... je suis d'accord. Mais je cherchais une façon dont les pièces jointes restent intégrées dans le courrier. Considérez comment outlook enregistre un fichier .msg; La pièce jointe reste comme un élément intégré du fichier ... des idées sur ce ..? – Amit

2

Qu'est-ce que vous utilisez comme nom de fichier? ça se termine par .msg?

je fais quelque chose comme ça et il fonctionne comme vous le décrivez vous le voulez aussi:

Outlook.MailItem msg; 
foreach (object obj in f.Mapi.Items) 
{ 
    try 
    {       
     msg = obj as Outlook.MailItem; 
     // ... set file name using message attributes 
     // string fullPath = "something" + ".msg" 
     msg.SaveAs(fullPath, Outlook.OlSaveAsType.olMSG); 
    } 
} 

La raison pour laquelle je suis tellement curieux dans votre cas est que je me demande comment je peux reproduire ce que vous faites : enregistrer l'article de courrier sans sauvegarder les pièces jointes?

Questions connexes