C#使用System.Net.Mail发送QQ邮箱邮件示例

Ruby
Ruby
发布时间:2026-10-14 | 2人浏览过
原创

在C#开发中,利用 System.Net.Mail 库可以便捷地通过服务器协议发送电子邮件。对于个人开发者,常选用QQ邮箱作为发件通道。本方案详细演示了如何使用 SmtpClient 类与 SMTP 服务器建立连接、构建含格式的邮件体并完成投递。需注意 QQ 邮箱对第三方客户端的安全限制,务必启用专属授权码。

运行环境与前置准备

第1步:环境确认与依赖引用

该代码适用于 .NET Framework(如 4.5 及以上版本)或 .NET Core / .NET 5+ 项目。确保项目中引入了 System.Net.Mail 命名空间的支持。若是在较新的 ASP.NET Core 应用中,通常仍需手动添加该基础包或在代码中直接引用。

第2步:开启 QQ 邮箱 SMTP 服务

直接使用 QQ 账号密码往往会被拒绝(报“mail from address must be same as authorization user”或类似错误)。请按以下路径操作:进入 QQ 邮箱 → 设置 → 账户 → 找到“POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务”。点击生成「授权码」。后续代码中的密码字段应填入此授权码。

C# 发送邮件代码实现

using System; using System.Net; using System.Net.Mail; // 需引入的命名空间 public class EmailSender { public static void SendEmail() { try { // 1. 构建邮件消息对象 MailMessage mm = new MailMessage(); // 设置发件人 MailAddress fromAddr = new MailAddress("sender@qq.com"); mm.From = fromAddr; // 设置收件人(可接收数组或单个字符串) mm.To.Add("recipient@qq.com"); // 抄送人(可选) //mm.CC.Add(new MailAddress("cc@qq.com")); // 2. 配置邮件主题与内容 mm.Subject = "Hello Dear:"; // 允许正文包含 HTML 标签 mm.IsBodyHtml = true; // 设定内容编码,防止中文乱码 mm.BodyEncoding = System.Text.Encoding.UTF8; // 邮件具体内容 mm.Body = "你好Mr流星!"; // 3. 配置 SmtpClient (服务端连接信息) SmtpClient sc = new SmtpClient(); // 指定 SMTP 主机地址 sc.Host = "smtp.qq.com"; // 指定网络投递方式 sc.DeliveryMethod = SmtpDeliveryMethod.Network; // 4. 配置身份验证凭证 NetworkCredential nc = new NetworkCredential(); // 注意:此处填写的是你的QQ邮箱账号 nc.UserName = "YOUR_QQ_EMAIL@qq.com"; // 【关键】此处必须填“授权码”,不是QQ密码! nc.Password = "YOUR_AUTHORIZATION_CODE"; sc.UseDefaultCredentials = false; // 建议使用显式凭据设置 sc.Credentials = nc; // 5. 发送请求 sc.Send(mm); Console.WriteLine("邮件发送成功!"); } catch (Exception ex) { // 建议在实际项目中记录详细日志 Console.WriteLine($"发送失败: {ex.Message}"); throw; } } }

参数配置与注意事项

  • Host 参数: 本文以腾讯邮箱为例,配置为 smtp.qq.com。如果是其他服务商(如163),请替换为对应的域名。
  • Credentials 机制: 代码中将 UseDefaultCredentials 设为 false 并显式赋予 nc 对象,这能有效隔离系统级默认凭据干扰,提高连通稳定性。
  • IsBodyHtml: 当设置为 true 时,mm.Body 支持 <b>, <br> 等标准HTML标签,方便排版;若不需要格式修饰可设回 false。
  • Demo 数据: 上述代码仅为逻辑骨架,使用前请务必将占位符 sender@qq.com、收件人地址及 AUTHORIZATION_CODE 替换为真实有效的值。切勿将包含真实密码的代码提交至公共仓库。

完成判断与排错指南

  1. 成功标准: 代码执行流不捕获异常,控制台输出正常,且目标邮箱收到带有指定标题与正文的信件。
  2. 报安全拦截错误: 检查是否为QQ邮箱限制了陌生设备/脚本访问。解决方法依然是前往设置界面重新获取一次客户端专用授权码。
  3. 端口问题: 如果当前环境屏蔽了默认端口,可在 new SmtpClient 后追加一行 sc.Port = 587; (部分云服务需强制要求 TLS 加密端口)。

以上就是C#调用SMTP接口完成邮件发送功能的详细内容,更多关于C#邮件编程的资料请关注本站其它相关文章!

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表