C#用Outlook发送电子邮件 - 在发件箱中没有附件
问题描述:
我有一个使用Outlook发送带附件的邮件的程序。它工作正常,发送带附件的电子邮件,但在发件箱中,邮件中没有附件。当有人收到消息时,附件是可见的,但在发件箱中不可见。 下面是一些代码:C#用Outlook发送电子邮件 - 在发件箱中没有附件
Outlook.MailItem mail = (Outlook.MailItem)outlookApp.CreateItem(Outlook.OlItemType.olMailItem);
mail.BodyFormat = Outlook.OlBodyFormat.olFormatPlain;
int iAttachType = (int)Microsoft.Office.Interop.Outlook.OlAttachmentType.olByValue;
mail.Attachments.Add(Application.StartupPath+"/"+attachment, iAttachType, null, attachment);
mail.To = email;
mail.Subject = "Something";
mail.Body = "Some body";
mail.Send();
这个我使用前:
private Outlook.Application outlookApp;
private Outlook._NameSpace outlookNameSpace;
private Outlook.MAPIFolder outbox;
和
outlookApp = new Outlook.Application();
outlookNameSpace = outlookApp.GetNamespace("MAPI");
outlookNameSpace.Logon(null, null, false, false);
outbox = outlookNameSpace.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderOutbox);
我的Outlook程序与Microsoft Exchange Serwer连接。当我使用用C++编写的应用程序时,它将附件保存在发件箱中的邮件中。
Thx求助!
答
您可能正在使用旧版本的Outlook项目。
如果您保留对您的邮件项目,rec模式,检查员和其他类型[我现在忘记]的引用超过您的需求,就会发生这种情况。
您的引用通常会指向该项目的旧版本,并且保留它也会阻止您获取对已更新项目(带有附件的项目)的引用,即使事件(Folder.BeforeItemMove)被触发时也是如此。
另外,你有没有尝试过,如果mail.Save()会为你做任何事情?
这是我一用完一件物品就会用到的东西。
public static void NullAndRelease(object o)
{
if (o == null) {
return;
}
try {
int releaseResult = 0;
do {
releaseResult = System.Runtime.InteropServices.Marshal.ReleaseComObject(o);
} while (releaseResult >= 0);
} catch {
} finally {
GC.Collect();
GC.WaitForPendingFinalizers();
}
}
该捕获没有消息,在我的情况并不重要。如果有人会传递一个引用com对象以外的东西的引用,那么它就在那里。你也可以尝试FinalReleaseComObject(o)。
你也可以使它成为一个布尔,但在我的情况下,它不是必需的。 – maka 2012-01-18 08:19:52
当我使用保存时,我得到:十个元素zostałprzeniesiony lubusunięty。 (此元素已被移动或删除) – Chris 2012-01-18 10:57:19
更重要的是。当我登录到我的邮件的Web界面时,在发件箱中有附件的邮件....我仍然没有得到您的解决方案;/ – Chris 2012-01-18 11:06:42