如何通过指定发件人地址使用 Microsoft.Office.Interop.Outlook.MailItem 发送邮件

Posted

技术标签:

【中文标题】如何通过指定发件人地址使用 Microsoft.Office.Interop.Outlook.MailItem 发送邮件【英文标题】:How to send a mail using Microsoft.Office.Interop.Outlook.MailItem by specifying the From Address 【发布时间】: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();

【问题讨论】:

【参考方案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 我认为他们的意思是命名空间/别名“使用”

以上是关于如何通过指定发件人地址使用 Microsoft.Office.Interop.Outlook.MailItem 发送邮件的主要内容,如果未能解决你的问题,请参考以下文章

如何更改后缀的默认电子邮件地址? [关闭]

如何通过邮件找到发件人的IP地址.

如何设置 mailx 命令的发件人电子邮件地址?

如果地址是别名,如何使用 ews-java-api 识别收件人电子邮件?

linux使用mail命令-- -f指定发件人时出错

PayPal 自适应支付 - 我如何获得账户 ID?