C#中发送Hotmail邮件失败,报连接超时错误,求解决方法
问题分析与解决
你的代码因SMTP配置不完整导致连接超时失败,具体问题及修正方案如下:
核心问题
- SMTP服务器地址过时:
smtp.live.com是Hotmail旧版服务器,当前Outlook/Hotmail需使用smtp.office365.com - 缺少端口与SSL配置:Outlook SMTP服务强制要求SSL加密,且需指定端口587,否则无法建立有效连接
修正后的代码
MailAddress to = new MailAddress("MAIL@hotmail.com"); MailAddress from = new MailAddress("MAIL@hotmail.com"); MailMessage message = new MailMessage(from, to); message.Subject = "Message du siute as-quebec.net de: " + EmailToSend.Email; message.Body = EmailToSend.Message; using (SmtpClient client = new SmtpClient("smtp.office365.com", 587)) { client.Credentials = new System.Net.NetworkCredential("MAIL@hotmail.com", "PASSWORD"); client.EnableSsl = true; // 必须启用SSL加密 client.Send(message); }
额外注意事项
- 双重验证适配:若账号开启了双重验证,直接用登录密码会失败,需在微软账户后台生成应用专用密码替换代码中的"PASSWORD"
- 资源释放:用
using包裹SmtpClient可确保网络资源被正确释放,避免连接泄漏 - 账户权限:部分账户需在安全设置中允许SMTP客户端访问(推荐用应用密码替代"允许不安全应用"选项)
你遇到的
ExtendedSocketException本质是未正确配置SSL和端口,导致客户端无法与SMTP服务器建立有效连接,最终超时断开。
内容的提问来源于stack exchange,提问作者mathdx
相关产品推荐
相关产品推荐

