新闻中心

C# 如何发送电子邮件 - SmtpClient类的配置与使用

2025-12-04
浏览次数:
返回列表
C#中用SmtpClient发邮件关键在于正确配置SMTP服务器、端口、加密方式及凭据:Gmail用587+STARTTLS+应用专用密码,QQ邮箱用587/465+授权码,Outlook用587+App Password,163用465+授权码;需注意EnableSsl与端口匹配,避免认证失败。

c# 如何发送电子邮件 - smtpclient类的配置与使用

在 C# 中发送电子邮件,SmtpClient 是最常用的方式(尽管 .NET 6+ 已标记为过时,但仍在广泛使用)。关键不在于“能不能发”,而在于配置是否正确、凭据是否有效、端口与加密方式是否匹配服务商要求

SMTP 服务器基础配置要点

不同邮箱服务商的 SMTP 设置差异较大,常见组合如下:

  • Gmail:smtp.gmail.com,端口 587(启用 STARTTLS),需开启“应用专用密码”(2FA 开启后)或允许“不够安全的应用”(已逐步弃用)
  • Outlook / Hotmail:smtp-mail.outlook.com,端口 587,STARTTLS,账户密码直连(推荐使用 Microsoft App Password)
  • QQ 邮箱:smtp.qq.com,端口 587 或 465(465 需用 SSL),必须使用“SMTP 授权码”,不能用登录密码
  • 163 邮箱:smtp.163.com,端口 465(SSL)或 25(不推荐),同样需 SMTP 授权码

码中正确初始化 SmtpClient

注意:.NET Core 3.0+ 和 .NET 5/6/7+ 中 SmtpClient 已被标记为 [Obsolete],但尚未移除;若追求长期兼容,建议后续迁移到 MailKit。当前仍可稳定使用,配置示例如下:

var client = new SmtpClient("smtp.qq.com")
{
    Port = 587,
    Credentials = new NetworkCredential("your_email@qq.com", "your_smtp_authorization_code"),
    EnableSsl = true // 若用端口 587,设为 true 表示 STARTTLS;若用 465,也设为 true(隐式 SSL)
};

⚠️ 常见错误:把 EnableSsl = true 和端口 25 混用,或对 587 端口误设 UseDefaultCredentials = true —— 这会导致认证失败。

构造并发送邮件内容

使用 MailMessage 设置收件人、主题、正文和附件:

var msg = new MailMessage
{
    From = new MailAddress("your_email@qq.com", "发件人昵称"),
    Subject = "测试邮件",
    Body = "这是一封来自 C# 的测试邮件。",
    IsBodyHtml = false // 设为 true 可发送 HTML 内容
};
msg.To.Add("receiver@example.com");
msg.CC.Add("cc@example.com");
<p>// 添加附件(可选)
msg.Attachments.Add(new Attachment(@"C:\temp\report.pdf"));</p><p>client.Send(msg); // 同步发送(.NET 6+ 推荐用 SendMailAsync)</p>
                    <div class="aritcle_card">
                        <a class="aritcle_card_img" href="/xiazai/code/10659">
                            <img src="https://img.php.cn/upload/webcode/000/000/019/176318640638965.jpg" alt="NopCommerce (ASP.NET商城)">
                        </a>
                        <div class="aritcle_card_info">
                            <a href="/xiazai/code/10659">NopCommerce (ASP.NET商城)</a>
                            <p>nopCommerce 是一个由ASP.NET多层模式开发的开源电子商城系统,可以自行设置模板、配置灵活、功能强大,它内含一个目录前端和一个管理工具后端。前端包括用户注册、商品购买(可以进行评论)、投票、Blog等,后端有类别管理、产品管理、客户及角色管理、订单管理、纳税管理、国家(地区管理)、邮件发送、消息模板、新闻发布、blog管理,可以对列表数据进行XML导出。</p>
                            <div class="">
                                <img src="/static/images/card_xiazai.png" alt="NopCommerce (ASP.NET商城)">
                                <span>0</span>
                            </div>
                        </div>
                        <a href="/xiazai/code/10659" class="aritcle_card_btn">
                            <span>查看详情</span>
                            <img src="/static/images/cardxiayige-3.png" alt="NopCommerce (ASP.NET商城)">
                        </a>
                    </div>
                <p>// 记得释放资源
msg.Dispose();
client.Dispose();

建议始终调用 Dispose(),尤其在循环批量发信时,避免 socket 耗尽。

异常处理与调试建议

SMTP 发送失败通常不是代码问题,而是网络或配置问题。捕获并检查以下异常:

  • SmtpException:如“认证失败”、“邮箱地址被拒绝”、“配额超限”,重点看 e.StatusCodee.Message
  • SocketException:说明连不上服务器,检查防火墙、代理、DNS 或端口是否被屏蔽
  • InvalidOperationException:比如未设置 Credentials 却尝试发送认证必需的服务器

调试小技巧:用 Telnet 或 PowerShell 测试基础连通性:Test-NetConnection smtp.qq.com -Port 587;开启 client.DeliveryMethod = SmtpDeliveryMethod.Network(默认值,确保不走本地 IIS SMTP)。

基本上就这些。配置对了,发邮件不复杂但容易忽略授权码、端口、SSL 模式三者的对应关系。

以上就是C# 如何发送电子邮件 - SmtpClient类的配置与使用的详细内容,更多请关注其它相关文章!


# 哪些网站可以做seo  # 发邮件  # 如何实现  # 应用程序  # 后端  # 是一个  # 这是  # 关键词排名利搜  # 怎么被营销推广  # 让你  # 设计公司网站优化营销  # 河南企业seo必选  # 辽宁推广全域营销哪家好  # 湖南高端网站建设报价  # 建设机床网站  # 抖音快手关键词排名优化  # seo的效果  # ssl  # c#  # word  # html  # 防火墙  # app  # 端口  # qq  # iis  # 电子邮件  # ai  # pdf  # outlook  # micro  # 设为  # 发送电子邮件  # 分片 


相关栏目: 【 科技资讯46185 】 【 网络学院92790


相关推荐: AO3访问入口汇总 AO3网页版同人作品一键直达  HTML空白字符处理机制:渲染、DOM与编码实践  俄罗斯方块最新版入口 俄罗斯方块在线玩官网入口  windows10怎么查看硬盘序列号_windows10硬盘id查询命令  Win10怎么设置静态IP地址 Win10手动配置IP地址步骤【指南】  如何创建独立于主系统的J*a运行环境_隔离式环境搭建策略  MAC的“快捷指令”怎么同步到iPhone_MAC利用iCloud同步所有设备的自动化指令  利用Bokeh CustomJS动态控制DataTable列可见性  Python中如何避免重复条件判断:利用数据结构实现动态逻辑  在Socket.IO连接中实现Access Token自动更新与动态重连  在J*a中如何隐藏复杂性_使用门面模式组织对象交互  C++如何实现一个装饰器模式_C++设计模式之动态地给对象添加额外职责  葱吃多了会怎样 葱吃多了会伤胃吗  网站内容防复制粘贴的实现策略与局限性  ACG动漫手机版官网入口 手机ACG动漫APP在线观看正版  HuggingFaceEmbeddings中向量嵌入维度调整的限制与理解  mcjs网页版在线存档 mcjs云存档登录入口  Tabulator表格中精确实现日期时间排序的指南  AO3官方镜像站点汇总 AO3同人作品网页版直达链接  顺丰快递查询系统 官方正版查询入口  css滚动区域卡顿如何改善_css滚动问题用will-change优化渲染  Windows电脑怎么截图最方便_系统自带截图工具的5种神仙用法【技巧】  cad怎么合并重叠的线段_cad清理重复重叠线条的操作方法  J*a应用集成GitHub CLI与API认证指南  win11开机启动修复循环怎么办 Win11无法进入系统高级启动解决方法【修复】  EMS快递官网app_中国邮政速递物流手机客户端  Windows7怎么硬盘安装 Windows7提取ISO镜像到非系统盘并运行setup.exe实现硬盘直装【教程】  html两个JS只运行一个怎么办_让双JS在html中都运行方法【技巧】  小猿搜题在线学习页面在哪_小猿搜题在线学习中心入口  邮编格式怎么匹配地址_根据邮编格式快速匹配详细地址的技巧  冬*霸灯泡不亮怎么办_浴霸取暖灯一盏不亮的灯座清洁修复法  HTML转PPT成品工具有哪些?HTML网页转PPT成品工具大全  必由学官方平台入口 必由学在线课堂登录地址  蓝湖怎样用切图标注提对接效率_蓝湖用切图标注提对接效率【设计对接】  Win11怎么关闭快速启动_Win11彻底关机设置教程  LINUX怎么设置定时任务_LINUX crontab配置教程  我的世界mc.js免费游戏直接能玩 我的世界mc.js小游戏免费秒玩入口  J*aScript打印功能_j*ascript输出控制  QQ邮箱官方网页版登录 QQ邮箱个人邮箱快速访问  12306选座怎么选到特殊座位_12306特殊座位选择注意事项  J*a递归快速排序中静态变量导致数据累积问题的解决方案  iwriter统一登录平台 iwrite账号密码登录页面  顺丰快递查单号物流信息 顺丰快递小程序查询入口  AO3最新入口2025公告_AO3中文官网合集  微信商城在哪里打开【步骤】  如何在网页中实现特定地点的随机图片展示  J*aScript井字棋(Tic-Tac-Toe)核心交互逻辑实现教程  小红书怎么解除第三方平台绑定_小红书多平台登录解绑方法介绍  QQ邮箱官网登录入口 QQ邮箱网页版邮箱快速登录  html怎么运行外部js文件中的函数_运html外js文件函数法【技巧】 

搜索