我想将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
答案 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