【问题标题】:How to send a mail using Microsoft.Office.Interop.Outlook.MailItem by specifying the From Address如何通过指定发件人地址使用 Microsoft.Office.Interop.Outlook.MailItem 发送邮件
【发布时间】:2012-06-28 17:21:04
【问题描述】:

我正在使用 Interop 通过 Outlook 发送电子邮件,但我无法指定发件人电子邮件地址。

我想向来自同一发件人(来自)的多个用户发送邮件。我需要提及发件人的电子邮件地址。但是,我无法使用 Intellisense 找到允许我指定它的属性。

请帮忙。

Microsoft.Office.Interop.Outlook.Application olkApp1 = 
    new Microsoft.Office.Interop.Outlook.Application();
Microsoft.Office.Interop.Outlook.MailItem olkMail1 =
    (MailItem)olkApp1.CreateItem(OlItemType.olMailItem);
        olkMail1.To = txtpsnum.Text;
        olkMail1.CC = "";
        olkMail1.Subject = "Assignment note";
        olkMail1.Body = "Assignment note";
        olkMail1.Attachments.Add(AssignNoteFilePath, 
            Microsoft.Office.Interop.Outlook.OlAttachmentType.olByValue, 1, 
                "Assignment_note");
olkMail1.Save();
//olkMail.Send();

【问题讨论】:

    标签: c# email outlook vsto


    【解决方案1】:

    Send 方法使用默认帐户发送邮件。要指定不同的帐户来发送邮件,请在调用 Send 方法之前将 SendUsingAccount 属性设置为所需的 Account

    var application = new Application();
    var mail = (_MailItem) application.CreateItem(OlItemType.olMailItem);
    mail.To = "anonymous@somedomain.com";
    ....
    Outlook.Account account = Application.Session.Accounts["MyOtherAccount"];
    mailItem.SendUsingAccount = account;
    mail.Send();
    

    更多信息可以在这里找到:

    http://msdn.microsoft.com/en-us/library/ff184652.aspx

    【讨论】:

    • 如何创建我的邮件并打开它? (像mailto?)。保存把邮件放在非发送邮件中,但是我们可以有一个新创建邮件的窗口吗?
    • @Zaphod:使用mail.Display(false) 将电子邮件显示为非模式窗口。
    • @RomanD.Boiko :感谢您的评论,这就是我正在寻找的内容。
    【解决方案2】:

    您正在使用 Outlook 发送邮件。由于必须将 Outlook 配置为使用邮件的from 地址,因此您不能直接提供from 地址。但是,您可以选择 Outlook 上可用的帐户。例如:

    using Outlook = Microsoft.Office.Interop.Outlook;
    
    Outlook.Accounts accounts = olkApp1.Session.Accounts;
    foreach (Outlook.Account account in accounts)
    {
        // When the e-mail address matches, send the mail.
        if (account.SmtpAddress == "from@mail.com")
        {
                olkMail1.SendUsingAccount = account;
                ((Outlook._MailItem)olkMail1).Send();
                break;
        }
    }
    

    【讨论】:

    • 感谢您提供本文的使用部分。我花了很长时间才找到那个。我不确定开发人员通常如何知道他们需要包含哪些“使用”内容?
    • @Eric 您可以为任何实现 IDisposable 的类编写 using {} 块。当 using 块结束时,其中定义的变量会被自动释放。
    • @j2associates 我认为他们的意思是命名空间/别名“使用”
    猜你喜欢
    • 2011-07-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-21
    • 2014-10-21
    • 2011-04-21
    • 1970-01-01
    • 2014-09-22
    • 2011-05-13
    相关资源
    最近更新 更多