2012-01-18 88 views
1

我有一個使用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求助!

回答

0

您可能正在使用舊版本的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

相關問題