我有一个使用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 ++编写的应用程序时,它将附件保存在发件箱中的消息中。
寻求帮助!
答案 0 :(得分:0)
您可以使用旧版Outlook项目。
如果您继续引用您的邮件,rec-patterns,检查员和其他类型[我现在忘记]的时间比您需要的时间长,就会发生这种情况。
您的引用通常会指向该项目的旧版本并保持它也可以阻止您获得对更新项目(带附件的引用)的引用,即使事件(Folder.BeforeItemMove)被触发也是如此。 / p>
另外,你试过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)。