如何通过指定发件人地址使用 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 发送邮件的主要内容,如果未能解决你的问题,请参考以下文章