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

使用System.Net.Mail发送含href链接邮件失败问题求助

解决System.Net.Mail发送含HTML链接邮件失败的问题

可能的原因及对应解决办法

1. 确认开启HTML正文模式

必须将MailMessage.IsBodyHtml设为true,否则HTML标签会被当作纯文本处理,可能触发服务器内容拦截规则:

var mail = new MailMessage();
mail.IsBodyHtml = true;
mail.Body = "<a href=\"https://patrimoine-click.netexplorer.pro\">ici</a>";

2. 调整HTML链接的引号格式

如果双引号导致字符串解析冲突,可改用单引号包裹href属性值:

mail.Body = "<a href='https://patrimoine-click.netexplorer.pro'>ici</a>";

若正文是通过字符串拼接/格式化生成的,要确保没有未转义的引号嵌套问题。

3. 排查SMTP服务器的内容过滤

部分邮件服务器会拦截疑似钓鱼、垃圾邮件的域名链接。可以先替换为公开测试域名(如https://example.com)测试:

  • 若替换后能正常发送,说明目标域名被服务器拦截,需联系管理员白名单,或调整邮件内容降低垃圾邮件判定风险。

4. 启用SMTP日志定位具体错误

System.Net.Mail默认不输出详细错误,可通过配置日志查看发送过程细节:
在App.config/Web.config中添加:

<system.diagnostics>
  <sources>
    <source name="System.Net.Mail">
      <listeners>
        <add name="SmtpLog"/>
      </listeners>
    </source>
  </sources>
  <sharedListeners>
    <add name="SmtpLog"
         type="System.Diagnostics.TextWriterTraceListener"
         initializeData="smtp_send.log" />
  </sharedListeners>
  <trace autoflush="true" />
</system.diagnostics>

运行程序后查看生成的smtp_send.log,里面会包含服务器返回的错误码和详细交互信息。

5. 确保正文编码正确

设置邮件正文编码为UTF-8,避免编码异常导致HTML解析失败:

mail.BodyEncoding = Encoding.UTF8;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 04:46:11