C#使用Outlook发送电子邮件-发件箱中没有附件

本文关键字:-发 Outlook 使用 电子邮件 | 更新日期: 2023-09-27 18:20:41

我有一个程序,它使用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++编写的应用程序时,它将附件保存在发件箱中的邮件中。

谢谢帮助!

C#使用Outlook发送电子邮件-发件箱中没有附件

您可能正在使用outlook项的旧版本。

如果你对邮件、记录模式、检查员和其他类型(我现在忘记了)的引用比你需要的时间长,就会发生这种情况。

您的引用通常会指向项目的旧版本,即使触发了事件(Folder.BeforeItemMove),保留它也会阻止您获得对更新的引用(带附件的引用)。

另外,你试过if邮件吗。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)。