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

C#使用MailKit通过Office 365发送邮件进入垃圾箱问题求助

解决方案

  1. 核对域名DNS反垃圾配置
    这是邮件进入垃圾箱最常见的原因,你需要为发件域名配置三类DNS记录:
  • SPF记录:TXT类型,值为 v=spf1 include:spf.protection.outlook.com -all,确保覆盖Office365的发件IP段
  • DKIM记录:在Office365 admin中心为你的发件域名启用DKIM签名,将生成的公钥配置为DNS的TXT记录
  • DMARC记录:TXT类型,初始可配置为 v=DMARC1; p=none; sp=none; rua=mailto:dmarc@你的域名,后续可根据反馈调整策略严格度
  1. 统一发件人与认证账号
    你现有代码中发件人邮箱为simon.price@xxxx.co.uk,认证使用的是simon.price@sxxx.co.uk,二者域名不一致,Office365会将这类 mismatch 判定为高风险,直接提升垃圾邮件评分,必须保证发件人地址和SMTP认证地址完全一致。

  2. 优化邮件内容结构

  • 不要仅发送简单的测试文本,现有内容sample test属于典型的垃圾邮件特征词汇,测试时尽量使用接近真实业务场景的内容
  • 不要仅提供HTML格式的正文,同时补充纯文本版本的正文,降低反垃圾系统的评分
  • 主题避免使用测试、推广、中奖等敏感词汇
  1. 调整SMTP连接参数
    将SecureSocketOptions.Auto显式修改为SecureSocketOptions.StartTls,明确使用TLS加密传输,避免自动识别时出现降级导致的安全风险判定。

  2. 排查IP与租户配置

  • 核查你发件服务器的公网IP是否在全球反垃圾IP黑名单中,若在名单内需申请移除
  • 检查Office365租户的垃圾邮件过滤规则,可先将发件地址加入收件方的安全发件人列表验证,若加入后不再进入垃圾箱则可排除代码问题

修正后参考代码

var message = new MimeMessage();
// 发件人地址与后续认证地址完全一致
message.From.Add(new MailboxAddress("Simon Price", "simon.price@sxxx.co.uk"));
message.To.Add(new MailboxAddress("收件人名称", "实际收件人邮箱"));
message.Subject = "符合业务场景的正规主题";

// 同时构建纯文本和HTML版本正文
var bodyBuilder = new BodyBuilder();
bodyBuilder.TextBody = "邮件对应的纯文本内容,和HTML内容信息一致";
bodyBuilder.HtmlBody = @"<p>正式的HTML邮件内容,避免简单测试文本</p>";
message.Body = bodyBuilder.ToMessageBody();

using (var client = new SmtpClient())
{
    // 显式指定StartTls加密
    client.Connect("smtp.office365.com", 587, SecureSocketOptions.StartTls);
    client.Authenticate("simon.price@sxxx.co.uk", "你的账号凭证");
    client.Send(message);
    client.Disconnect(true);
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 10:54:03