如何使用附件保存Outlook的邮件?

时间:2010-01-09 09:47:24

标签: c# outlook

我想将Outlook邮件与通过C#的附件一起保存为msg格式。

我尝试了以下代码

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);
}

}

它可以将邮件保存为msg但附件部分已删除。 SaveAs方法没有其他重载... :(

如果我尝试从Outlook保存邮件,则会将邮件与嵌入其中的附件一起保存。知道如何实现这一目标......?

我正在使用.Net Framework 3.5和Outolook 2007

2 个答案:

答案 0 :(得分:2)

你用什么作为文件名?它以.msg结束了吗?

我做了类似这样的事情,它的工作方式也如你所描述的那样:

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);
     }
 }

我对你的情况如此好奇的原因是我想知道如何重现你正在做的事情:保存邮件项目而不保存附件?

答案 1 :(得分:0)

我相信你必须另外保存它们。

使用MailItem上的Attachments属性获取所有附件。然后遍历它们并为每个附件调用SaveAsFile()。

下面链接中的示例是基本的,但它也应该在C#中工作

的MailItem ::附件 http://msdn.microsoft.com/en-us/library/bb207129.aspx

附件:: SaveAsFile http://msdn.microsoft.com/en-us/library/bb219926.aspx