smtpclient.send 在尝试通过 Office 365 发送电子邮件时挂起
Posted
技术标签:
【中文标题】smtpclient.send 在尝试通过 Office 365 发送电子邮件时挂起【英文标题】:smtpclient.send hangs while trying to send email via office 365 【发布时间】:2022-01-18 01:58:59 【问题描述】:我正在使用此代码通过 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。我也没有看到任何人有类似的问题。任何帮助将不胜感激。
谢谢 提克卢
【问题讨论】:
您是否尝试过使用 Fiddler 来了解幕后情况? 【参考方案1】:希望这可能会有所帮助:
-
将 smtpClient 的 Timeout 设置为较低的值,然后查看是否超时,或者等了超过 1 分钟?
smtpClient.Timeout = 100;
-
启动 Wireshark 以分析网络中的 smtp 流量。找出服务器是否回答。
检查您机器的防火墙选项
检查那里的所有参数
在机器上尝试使用相同选项的另一个邮件客户端
可能有帮助的测试工具:https://testconnectivity.microsoft.com/tests/o365
尝试远程登录https://docs.microsoft.com/en-us/Exchange/mail-flow/test-smtp-with-telnet?view=exchserver-2019
【讨论】:
我已经在使用 Outlook,而且效果很好。但据我所知,outlook 使用与 smtp 不同的协议连接到交换服务器。我一定会更改超时并检查。顺便说一句,我还从在线 smtp 检查器服务中检查过它,并收到超时错误。和交换服务器设置有关系吗? 那可能是office369会屏蔽其他在线服务,试试低一点:telnetdocs.microsoft.com/en-us/Exchange/mail-flow/…你需要一些东西,你可以在不同的机器上短时间执行不同的网络环境检查,如果它是防火墙的东西还是什么。如果 telnet 抛出错误,主要是它比 Outlook 或其他大 ui 的输出更有用。 通常 Outlook 检查帐户设置,使用域帐户并自动设置所有内容。可能是,你可以在设置里看到,和你的有什么不同,试一试 MS 也有一些新的测试工具:testconnectivity.microsoft.com/tests/o365 可能会帮助你找出问题:testconnectivity.microsoft.com/tests/O365Pop/input 微软似乎默认阻止了 SMTP 身份验证。我已使用此链接 docs.microsoft.com/en-us/exchange/… 中的说明为我用于电子邮件的帐户启用了它【参考方案2】:按照此过程启用 SMTP 身份验证后
https://docs.microsoft.com/en-us/exchange/clients-and-mobile-in-exchange-online/authenticated-client-smtp-submission
我们能够解决问题
谢谢 提克卢
【讨论】:
2022,我的租户一周岁了 - 从 c# 发送电子邮件没有任何帮助 你能详细点吗?以上是关于smtpclient.send 在尝试通过 Office 365 发送电子邮件时挂起的主要内容,如果未能解决你的问题,请参考以下文章
SmtpException:客户端或服务器仅配置为具有 ASCII 本地部分的电子邮件地址
错误 IDENTITY_INSERT 设置为 OFF 但实际上它是 ON