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

启用Multi-Factor Authentication(MFA)后,如何在.NET中发送邮件?

问题:启用MFA后,使用应用密码的Office365 SMTP发送代码是否可行?

我在多个旧网站中使用一段简单代码,用于表单提交时发送邮件通知,该代码运行正常。但IT管理员要为发件邮箱(Office365邮箱)启用Multi-Factor Authentication(MFA)。请问下方代码是否可行?因使用应用密码,是否不会受启用MFA的邮箱影响?

提供的代码:

using System;
using System.Net;
using System.Net.Mail;

protected void SendEmail()
{
    string fromEmail = "test@test.com";
    string appPassword = "YourAppPassword"; // 使用为应用生成的应用密码
    string toEmail = "recipient@example.com";
    string subject = "Test Email";
    string body = "This is a test email sent from ASP.NET WebForms.";

    try
    {
        using (MailMessage mail = new MailMessage())
        {
            mail.From = new MailAddress(fromEmail);
            mail.To.Add(toEmail);
            mail.Subject = subject;
            mail.Body = body;
            mail.IsBodyHtml = true;

            using (SmtpClient smtp = new SmtpClient("smtp.office365.com", 587))
            {
                smtp.EnableSsl = true;
                smtp.Credentials = new NetworkCredential(fromEmail, appPassword); // 使用应用密码
                smtp.Send(mail);
            }

            Response.Write("Email sent successfully.");
        }
    }
    catch (Exception ex)
    {
        Response.Write("Error: " + ex.Message);
    }
}

回答:

这段代码是可行的,使用应用密码确实不会受邮箱启用MFA的影响,核心逻辑和注意事项如下:

  • 应用密码是Office365专为不支持现代身份验证的传统应用(比如基于SmtpClient的旧系统)生成的专属凭证,启用MFA后普通账户密码无法用于SMTP验证,但应用密码可以正常替代使用。
  • 代码配置的SMTP参数完全符合Office365要求:服务器smtp.office365.com、端口587、启用SSL,这是Office365 SMTP服务的标准接入配置。
  • 代码通过NetworkCredential传入发件邮箱和应用密码的方式,完全符合应用密码的使用规则。

需要注意的细节:

  • 应用密码必须在Office365账户的安全设置中手动生成,生成后无法再次查看,需妥善保存备份。
  • 微软目前仍支持传统SMTP协议,但未来可能逐步淘汰,若后续Office365禁用该协议,此方式会失效,届时需迁移至Microsoft Graph API发送邮件。
  • 确保部署代码的服务器IP未被Office365列入垃圾发送黑名单,否则会被拒绝连接。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 09:35:01