C# 中使用应用密码登录 Office 365 SMTP 发送邮件的问题咨询
双因素认证下C# WPF调用Office 365发送邮件解决方案
前置条件
首先确认企业O365租户管理员已开放应用密码创建权限,若管理员禁用了该功能,需切换为Microsoft Graph OAuth2认证方案。
步骤1:生成O365应用密码
- 登录你的O365企业账号,进入安全信息设置页面
- 选择「添加登录方法」,在下拉列表中选中「应用密码」
- 自定义应用标识名(例如
WPF邮件发送工具),生成后立即复制保存该密码,该密码仅展示一次,遗失需重新生成
步骤2:代码改造
原有基于SmtpClient的代码无需做结构调整,仅需将原账号登录密码替换为上一步生成的应用密码即可,核心代码示例如下:
using System.Net; using System.Net.Mail; public void SendOffice365Mail(string recipient, string mailSubject, string mailContent) { using (SmtpClient client = new SmtpClient("smtp.office365.com", 587)) { client.EnableSsl = true; client.UseDefaultCredentials = false; // 密码位替换为生成的应用密码,无需修改账号地址 client.Credentials = new NetworkCredential("你的O365企业邮箱完整地址", "你生成的16位应用密码"); MailMessage message = new MailMessage(); message.From = new MailAddress("你的O365企业邮箱完整地址"); message.To.Add(recipient); message.Subject = mailSubject; message.Body = mailContent; message.IsBodyHtml = false; // 可根据需求调整是否支持HTML内容 client.Send(message); } }
异常排查
- 若提示认证失败,首先检查应用密码是否完整复制,无多余空格或字符遗漏
- 联系管理员确认对应邮箱账号已开启SMTP AUTH权限,未被租户全局限制
- 若企业禁用了应用密码功能,需更换为Microsoft Graph API配合OAuth2认证的方案实现邮件发送
内容的提问来源于stack exchange,提问作者Maris
相关产品推荐
相关产品推荐

