我正在开发一个将从Windows服务执行的控制台应用程序,该服务需要使用与运行Windows服务的域帐户相关联的域帐户发送电子邮件。
在我的开发机中,我登录了一个域帐户,该域帐户将与运行Windows服务的域相同,但无法使其正常运行。
对于此开发,我使用.NET 4.6.1和nuget包FluentEmail.Smtp
我的代码如下:
Email.DefaultSender = new SmtpSender(new SmtpClient
{
UseDefaultCredentials = true,
EnableSsl = true,
Host = "smtp.office365.com",
TargetName = "STARTTLS/smtp.office365.com",
Port = 587,
DeliveryMethod = SmtpDeliveryMethod.Network
});
await Email.From("myname@mycompanydomain.com", "Some tittle")
.To(emailListObject)
.Subject("Some subject")
.Body("Some body", true)
.SendAsync();
使用此代码,我得到以下异常:
Unable to connect to the remote server
A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond 52.96.9.178:587
at System.Net.Mail.SmtpConnection.ConnectAndHandshakeAsyncResult.End(IAsyncResult result)
at System.Net.Mail.SmtpTransport.EndGetConnection(IAsyncResult result)
at System.Net.Mail.SmtpClient.ConnectCallback(IAsyncResult result)
注意:从我的机器上,我可以ping异常中提到的IP
感谢您的帮助
答案 0 :(得分:0)
对于初学者来说,您可能想看看official document - direct send。您会注意到,在正确配置Exchange服务器的同时,还有很多问题(例如TLS安全性)。
在您的问题中没有更多信息的情况下,可以回答的内容非常有限,但是作为替代解决方案,可以看看直接发送。 (这要省得多)。
直接在设备或应用程序中输入以下设置。
contoso-com.mail.protection.outlook.com
Microsoft建议添加SPF记录,以避免将邮件标记为垃圾邮件。如果您是从静态IP地址发送的,则将其添加到域注册商的DNS设置中的SPF记录中,如下所示:
DNS entry Value
SPF v=spf1 ip4:<Static IP Address> include:spf.protection.outlook.com ~all