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)。

+0

你也可以使它成为一个布尔,但在我的情况下,它不是必需的。 – maka 2012-01-18 08:19:52

+0

当我使用保存时,我得到:十个元素zostałprzeniesiony lubusunięty。 (此元素已被移动或删除) – Chris 2012-01-18 10:57:19

+0

更重要的是。当我登录到我的邮件的Web界面时,在发件箱中有附件的邮件....我仍然没有得到您的解决方案;/ – Chris 2012-01-18 11:06:42