C#Outlook COM对象从发送邮件的邮箱发送电子邮件
问题描述:
我想从Outlook COM对象发送一封电子邮件,但是来自不是我的主帐户的“帐户”。我试图搜索我的帐户,但它只列出1个帐户,并且始终只从该帐户发送。我试图发送的另一个帐户是共享邮箱,例如文件夹。我可以访问邮箱并回复Outlook中的邮件,并从中提供正确的电子邮件,但是在程序中它只能提供我的标准信息。C#Outlook COM对象从发送邮件的邮箱发送电子邮件
Microsoft.Office.Interop.Outlook.Application oApp = new
Microsoft.Office.Interop.Outlook.Application();
Microsoft.Office.Interop.Outlook.NameSpace oNS = oApp.GetNamespace("mapi");
Microsoft.Office.Interop.Outlook.MailItem oMsg = (Microsoft.Office.Interop.Outlook.MailItem)oApp.CreateItemFromTemplate("c:\\test\\CAEmail.oft", inbox);
Outlook.Accounts accounts = oApp.Session.Accounts;
foreach (Outlook.Account account in accounts)
{
oMsg.Subject = subj;
oMsg.HTMLBody = message;
oMsg.To = emailTo;
oMsg.SendUsingAccount = account;
oMsg.Send();
}
答
首先,你需要给每个需要在Outlook中发送电子邮件时创建新的邮件项目:
Microsoft.Office.Interop.Outlook.MailItem oMsg = null;
Outlook.Accounts accounts = oApp.Session.Accounts;
foreach (Outlook.Account account in accounts)
{
oMsg = (Microsoft.Office.Interop.Outlook.MailItem)oApp.CreateItemFromTemplate("c:\\test\\CAEmail.oft", inbox);
oMsg.Subject = subj;
oMsg.HTMLBody = message;
oMsg.To = emailTo;
oMsg.SendUsingAccount = account;
oMsg.Send();
}
要知道,一个帐户应在Outlook中配置为能够发送该项目。你
也可以考虑使用的MailItem类,允许设置一个字符串,指示该邮件的发送者意图的显示名称的SentOnBehalfOfName财产。请注意,您需要拥有足够的权限才能代表他人发送。
+0
当我使用SendOnBehalfOfName时,出现以下错误:Message =“没有SmtpAddress的帐户:-----存在!”。我用----替换了电子邮件地址 – user1433164
答
您需要在目标邮箱中创建邮件 - 而不是使用GetDefaultFolder
,请使用GetSharedDefaultFolder
。
您只能从您登录的帐户发送。 Interop正在使用Windows用户环境访问Outlook。该电子邮件位于users文件夹中的一个pst文件中,该文件只能由所有者访问。 – jdweng