C# 如何使用域windows身份验证从office365帐户发送电子邮件

C# 如何使用域windows身份验证从office365帐户发送电子邮件,c#,office365,C#,Office365,我正在开发一个控制台应用程序,它将从windows服务执行,该服务需要使用与运行windows服务的域帐户关联的域帐户发送电子邮件 在我的开发机器中,我使用一个域帐户登录,该域帐户属于运行windows服务的同一个域,但我无法使它正常工作 对于这个开发,我使用.NET4.6.1和nuget包FluentEmail.Smtp 我的代码如下所示: Email.DefaultSender = new SmtpSender(new SmtpClient { UseDefaultCredentia

我正在开发一个控制台应用程序,它将从windows服务执行,该服务需要使用与运行windows服务的域帐户关联的域帐户发送电子邮件

在我的开发机器中,我使用一个域帐户登录,该域帐户属于运行windows服务的同一个域,但我无法使它正常工作

对于这个开发,我使用.NET4.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


我将感谢您的帮助

对于初学者,您可能想看一下。您将注意到,在正确配置Exchange服务器的同时,还存在许多问题(如TLS安全性)

如果您的问题中没有更多信息,那么回答的内容就相当有限,但是作为替代解决方案,您可以查看direct send。(这要少得多)

直接发送的设置 在设备上或直接在应用程序中输入以下设置

  • 服务器/智能主机。使用您的MX端点,例如,
    contoso com.mail.protection.outlook.com
  • 端口。使用端口25
  • TLS/StartTLS.启用此选项
  • 电子邮件地址。使用Office 365接受域之一的任何电子邮件地址。此电子邮件地址不需要有邮箱
Microsoft建议添加SPF记录以避免将邮件标记为垃圾邮件。如果您是从静态IP地址发送,请将其添加到域注册器DNS设置中的SPF记录中,如下所示:

DNS entry   Value
SPF         v=spf1 ip4:<Static IP Address> include:spf.protection.outlook.com ~all
DNS条目值
SPF v=spf1 ip4:包括:SPF.protection.outlook.com~all

您好,您找到您的案例中的错误了吗?