我在Outlook中设置了多个邮箱,我想使用Interop
发送电子邮件,但不能使用默认的Outlook帐户。
我有以下电子邮箱:
如何使用单独的邮箱发送电子邮件以发送电子邮件?
以下用于从邮件电子邮箱发送电子邮件的代码如下:
Outlook.Account account = GetAccountForEmailAddress(oApp, smtpaddress);
oMsg.SendUsingAccount = account;
oRecip.Resolve();
//oMsg.Send();
(oMsg as Microsoft.Office.Interop.Outlook._MailItem).Send();
public static Outlook.Account GetAccountForEmailAddress(Outlook.Application application, string smtpAddress)
{
try
{
Outlook.Accounts accounts = application.Session.Accounts;
foreach (Outlook.Account account in accounts)
{
// When the e-mail address matches, return the account.
if (account.SmtpAddress == smtpAddress)
{
return account;
}
}
}
catch (Exception ex)
{
WriteToErrorFile("GetAccountForEmailAddress Method Error on: {0} " + ex.Message);
}
}
答案 0 :(得分:0)
如果您在单个邮件配置文件中配置了多个帐户,则需要使用MailItem类的SendUsingAccount属性,该属性允许设置一个Account对象,该对象表示将在其下发送MailItem的帐户。
但是,如果您配置了Exchange帐户的单独配置文件并希望代表其他用户发送,请考虑使用MailItem类的SentOnBehalfOfName属性。
请注意,Microsoft目前不建议也不支持从任何无人参与的非交互式客户端应用程序或组件(包括ASP,ASP.NET,DCOM和NT服务)自动化Microsoft Office应用程序,因为Office可能在此环境中运行Office时,会出现不稳定的行为和/或死锁。
如果要构建在服务器端上下文中运行的解决方案,则应尝试使用已为安全无人值守执行的组件。或者,您应该尝试找到允许至少部分代码在客户端运行的替代方法。如果从服务器端解决方案使用Office应用程序,则应用程序将缺少许多成功运行的必要功能。此外,您将承担整体解决方案稳定性的风险。请在Considerations for server-side Automation of Office文章中详细了解相关内容。