我正在使用这段代码在winforms应用程序中通过Outlook发送电子邮件。
_exchangeService = new ExchangeService(ExchangeVersion.Exchange2013_SP1);
_exchangeService.AutodiscoverUrl(_sender);
// ...
var email = new EmailMessage(_exchangeService)
{
Subject = mailMessage.Subject,
Body = mailMessage.Body
};
email.ToRecipients.AddRange(mailMessage.To.Select(x => x.Address));
email.SendAndSaveCopy();
我已经在
_exchangeService.AutodiscoverUrl(_sender);
上设置了断点,并且可以看到发送者是 customerservice@mycompany.com。但是,电子邮件是以实际登录到 Windows 窗体应用程序的用户的名义发送的。例如:person@mycompany.com。我们尝试设置 Active Directory 以 "Send As" 和 "Send on Behalf" 的方式为此用户允许以 customerservice@mycompany.com 的名义发送,但没有帮助。我们还审查了此电子邮件的 Exchange Server 日志,清楚地表明它是从 person@mycompany.com 发送的。
在这里的代码示例中(https://msdn.microsoft.com/en-us/library/dd634273),它们使用了一个
NetworkCredential
。我需要这么做吗?为什么发送者(电子邮件的 发件人)会出现错误?
PrincipalContext
,你可以通过它获取网络登录用户的电子邮件。你附加的链接使用了网络凭据,所以可以使用相同的示例尝试一下。 - MethodManusing
,它非常好用。顺便说一下,你在mycomnpany
中有一个拼写错误,应该是customerservice@mycomnpany.com
。 - MethodMan