smtpclient.send在尝试通过office 365发送电子邮件时挂起



我使用此代码使用office 365交换服务器发送电子邮件。

var server = "smtp.office365.com";
var port = 587;
var username = "user@domain.com";
var password = "password";
var to = "test@domain.com";
var subject = "test message";
var body = "test message";
var smtpClient = new SmtpClient(server, port)
{
UseDefaultCredentials = false,
Credentials = new NetworkCredential(username, password),
DeliveryMethod = SmtpDeliveryMethod.Network,
EnableSsl = true
};
var messsage = new MailMessage(username, to, subject, body);
try
{
smtpClient.Send(messsage);
Console.WriteLine("Mail sent completed");
}
catch (Exception ex)
{
Console.Error.WriteLine(ex.ToString());
}

我的代码只是挂在smtpClient.Send(messsage(上;

我可以使用此帐户发送电子邮件。该帐户未启用2FA。我也没有看到任何人有类似的问题。如有任何帮助,我们将不胜感激。

谢谢Tiklu

希望这能有所帮助:

  1. 将smtpClient的Timeout设置为一个较低的值,然后看看你是得到了超时,还是等待了超过1分钟
smtpClient.Timeout = 100;
  1. 启动Wireshark来分析网络中的smtp流量。查明服务器是否回答
  2. 检查机器的防火墙选项
  3. 检查那里的所有参数
  4. 使用相同的选项在计算机上尝试另一个邮件客户端
  5. 可能有帮助的测试工具:https://testconnectivity.microsoft.com/tests/o365
  6. 尝试telnethttps://learn.microsoft.com/en-us/Exchange/mail-flow/test-smtp-with-telnet?view=exchserver-2019

在此过程后启用SMTP身份验证

https://learn.microsoft.com/en-us/exchange/clients-and-mobile-in-exchange-online/authenticated-client-smtp-submission

我们能够解决问题

谢谢Tiklu

最新更新