You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Visual Studio 2015中使用Outlook邮箱发信遇问题求解决

修正Outlook邮件发送代码的方案

我来帮你看看这个问题——用SmtpClient发Outlook邮件总是失败,大概率是几个常见配置没搞对,咱们一步步来修正:

原代码的核心问题

  • 端口配置错误:Outlook.com的SMTP服务启用SSL时,应该使用端口587而非25,25端口在很多网络环境下会被拦截或需要额外的非SSL配置。
  • 认证优先级问题:默认情况下SmtpClient.UseDefaultCredentials为true,这会覆盖你手动设置的Credentials,导致邮箱认证失败。
  • 异常处理不严谨:直接访问w.InnerException可能会因为空值引发新的错误,需要先判断是否存在。
  • 无主题邮件:部分邮件服务器会拒收没有主题的邮件,虽然不是致命问题,但建议补充主题。

修正后的代码

using System.Net;
using System.Net.Mail;
using System.Windows.Forms;

// 实例化SmtpClient,使用正确的SMTP地址和端口
SmtpClient cv = new SmtpClient("smtp.office365.com", 587);
cv.EnableSsl = true;

// 必须先禁用默认凭据,再设置自定义凭据
cv.UseDefaultCredentials = false;
cv.Credentials = new NetworkCredential("xxxemail@mail.com", "你的邮箱密码或应用专用密码");

try
{
    // 补充邮件主题,避免服务器拒收
    cv.Send("xxxemail@mail.com", "xxxanotheremail@mail.com", "测试邮件", "Hello,这是一封测试邮件");
    MessageBox.Show("邮件发送成功!");
}
catch (Exception w)
{
    // 更严谨的异常信息展示,处理InnerException为空的情况
    string errorMsg = "发送失败:" + w.Message;
    if (w.InnerException != null)
    {
        errorMsg += "\n内部错误:" + w.InnerException.Message;
    }
    MessageBox.Show(errorMsg);
}

关键注意事项

  • 两步验证的特殊处理:如果你的Outlook账户开启了两步验证,不能直接使用登录密码,需要登录微软账户后台生成应用专用密码,用这个密码替换代码中的登录密码。
  • 网络权限检查:确认Windows防火墙、杀毒软件没有拦截程序访问587端口。
  • 邮箱SMTP权限:登录Outlook网页版,进入「设置」→「邮件」→「同步电子邮件」,确保SMTP协议访问权限是开启的。
  • 关于SmtpClient过时:在较新的.NET版本中SmtpClient已标记为过时,但VS2015对应的.NET Framework版本中可以正常使用,若后续升级框架,可考虑使用MailKit库替代。

内容的提问来源于stack exchange,提问作者Richard Teunen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 07:20:35