【问题标题】:Email messages going to spam folder电子邮件进入垃圾邮件文件夹
【发布时间】:2011-06-29 20:43:04
【问题描述】:

我创建了一个社区门户,用户可以在其中创建他/她的帐户。成功注册后,确认邮件将发送到注册的电子邮件地址。

我正在使用以下代码发送邮件-

private void SendMail(string recvr, string recvrName, string verCode, int NewUserID)
{
    try
    {
        string emailID = ConfigurationManager.AppSettings["WebMasterMail"];
        string mailPass = ConfigurationManager.AppSettings["pass"];
        string mailer = ConfigurationManager.AppSettings["mailer"];

        MailMessage msg = new MailMessage();
        MailAddress addrFrom = new MailAddress(emailID, "Panbeli.in.... Bari community portal");
        MailAddress addrTo = new MailAddress(recvr, recvrName);

        msg.To.Add(addrTo);
        msg.From = addrFrom;
        msg.Subject = "You have registered sucessfully on PanBeli.in.";
        msg.Priority = MailPriority.High;
        msg.Body = RegisterMessageBody(recvrName, verCode,NewUserID);
        msg.IsBodyHtml = true;

        SmtpClient smtp = new SmtpClient(mailer);
        smtp.Credentials = new System.Net.NetworkCredential(emailID, mailPass);
        smtp.Send(msg);
    }
    catch (Exception Ex) { }
}

在测试时我们发现所有的确认邮件都进入了垃圾邮件文件夹而不是收件箱。

代码有什么问题,或者有什么与安全有关的。

任何人都可以建议解决这个问题。

感谢您分享您的时间。

【问题讨论】:

  • 尝试将地址添加为受信任的发件人
  • 我看不出这和编程有什么关系...
  • 您的代码与其说是生成的电子邮件和标题的问题,不如说是问题。此外,什么将其标记为垃圾邮件; Outlook,gmail,用户的ISP?每个人都将使用不同的方法来检测垃圾邮件。
  • 是在收件人服务器(例如 Gmail)上还是被电子邮件客户端(Outlook)标记为垃圾邮件?
  • @Chris S:如何将地址设置为受信任的发件人?

标签: c# asp.net


【解决方案1】:

对于遇到此问题的任何人,看起来 Google 将任何使用默认 ASP.NET 电子邮件身份验证主题和正文的邮件标记为垃圾邮件。即:

“请点击此处确认您的帐户。”

更改文本允许电子邮件通过垃圾邮件过滤器

【讨论】:

    【解决方案2】:

    这发生在我身上,现在已经解决了, 我只是在 MailMessage 对象上设置 BodyEncoding 和 SubjectEncoding 属性, 并将 DOCTYPE 和 html 标签添加到我的电子邮件标题中,

    var msg = new MailMessage
        {
            Subject = subject,
            Body = body,
            BodyEncoding = System.Text.Encoding.UTF8,
            SubjectEncoding = System.Text.Encoding.Default,
            IsBodyHtml = true
        };
    
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    

    现在运行良好

    【讨论】:

    • 您是如何将标题添加到您的电子邮件消息中的?
    【解决方案3】:

    在创建MailMessage时在代码中添加以下行

        msg.BodyEncoding = System.Text.Encoding.GetEncoding("utf-8");
    

    【讨论】:

    • 感谢您的建议
    【解决方案4】:

    即使是家庭名称,这种情况也经常发生。我很同情您,因为您只想要纯文本电子邮件,但如果您的客户真的想要这些电子邮件并且您真的想要您的徽标,那么他们可以将您的域列入白名单,以便所有电子邮件都能通过!

    我们使用一家名为 mailchimp 的公司来发送订阅者邮件,我向他们询问了如何避免垃圾邮件过滤器,尤其是在基本上是向一大群人投放广告的情况下,很难避免它们,这是他们的建议而且有很多。;

    Avoiding the Spam Filters

    【讨论】:

      【解决方案5】:

      听起来您的电子邮件被 SpamAssassin 等标记,因此您只需要专注于更改您的电子邮件,以免被标记。

      • 您的内容听起来没有任何理由对贝叶斯得分进行高分,所以我认为这不是问题所在。不过,尝试删除可能的触发词并没有什么坏处。

      • 您的邮件被标记为高优先级。你需要这个吗?这只是添加到垃圾邮件过滤器中的评分指标之一。垃圾邮件通常被标记为高优先级,因此您的邮件将受到更严格的审查。另一方面,对于某些过滤器而言,将您的消息标记为高优先级意味着审查较少。

      • IsBodyHTML 被标记为 true,但您只提供 text/html。您至少需要使用 text/plain 包含备用视图。

        message.IsBodyHtml = true;
        string html = RegisterMessageBodyHtml(recvrName, verCode,NewUserID);
        string plain = RegisterMessageBodyPlaintext(recvrName, verCode, NewUserID);
        message.AlternateViews.Add(AlternateView.CreateAlternateViewFromString(html, new ContentType("text/html"));
        message.AlternateViews.Add(AlternateView.CreateAlternateViewFromString(plain, new ContentType("text/plain"));
        
      • 了解 Google 如何处理您的消息。在 gmail 中,打开您发送的测试邮件,单击回复按钮旁边的向下箭头,然后选择“显示原始邮件”。您会看到 Google 如何处理您的消息。寻找像这样的标题:

        Received-SPF: softfail (google.com: domain of transitioning xxx@xxx.org does not designate xx.xx.xx.xx as permitted sender) client-ip=xx.xx.xx.xx;
        Authentication-Results: mx.google.com; spf=softfail (google.com: domain of transitioning xxx@xxx.org does not designate xx.xx.xx.xx as permitted sender) 
        
      • 阅读 SpamAssassin 的默认规则集,因为它可能是大多数过滤器规则集的一个很好的参考。如果您能确定您的邮件被标记的原因,您就可以修复它。

      【讨论】:

      • 谢谢格雷格。 +1 进行了很好的解释。我会根据您的指导进行检查。再次感谢。
      • 谢谢。对我来说,诀窍是所需的纯文本视图。
      【解决方案6】:

      您的发件人地址无效。尝试输入指向有效邮箱的真实电子邮件地址。最好此电子邮件地址与您用来发送邮件的 SMTP 服务器在同一个域中。如果没有,请阅读 SPF http://en.wikipedia.org/wiki/Sender_Policy_Framework

      【讨论】:

      • 谢谢哥们!!!您提供了非常有用的信息。但是让我解释一下,我正在从配置文件中提取邮件。在 MailAddress(emailID, "Panbeli.in...") 中,emailID 是一个从配置文件中获取地址的变量。第二个参数是标题。
      • @InfraRaza 我有点猜是的,不知道你的配置值是什么。不管是什么配置都有可能是原因。
      【解决方案7】:

      被标记为垃圾邮件的电子邮件

      不幸的是,这不是一个编程问题,但我可以理解您为什么会这么认为。 代码 正在发送电子邮件,并且它们已按照您的报告发送。所以这不太可能是你的代码的问题,因为它已经完全达到了它的目的!

      绕过它

      这一切都取决于收件人的邮件客户端(他们用来查看电子邮件的软件),或在某种网关上处理电子邮件的服务,或两者的组合!

      所有这些元素都有各种各样的算法和指标来确定电子邮件是否可能是垃圾邮件。因此,遗憾的是,不可能有一个万能的解决方案。有些人很聪明,有些人不那么聪明,有些人残酷地丢弃了很大一部分电子邮件,有些人纯粹按照“不在白名单上,你没有进入”的政策运作,还有一些人只是让一切都进来,不管内容/来源。

      解决这个问题的方法是:

      • 尝试进入主要电子邮件提供商的白名单。
      • 教育您的听众将发件人的电子邮件地址添加为受信任的联系人。
      • 检查您的邮件服务器 IP 未被某些提供商列入黑名单。您的 IP 地址可能曾被用于发送垃圾邮件。
      • 试用电子邮件内容

      【讨论】:

      • 谢谢汤姆。我已经在 Gmail 和 Yahoo 上进行了测试。所以你认为 Gmail 被标记为黑名单吗?
      • 肯定不是编程问题。这是另一条建议: 1. 更改电子邮件帐户 - 它已经在黑名单上 2. 不要经常发送电子邮件。制作一些队列并每例如 1 分钟分派一个。在短时间内快速发送大量消息会导致被识别为垃圾邮件发送者
      • @Irfan,可能很难知道。我认为虽然它更有可能是他们的智能垃圾邮件过滤器。尝试更改您的内容/来源,或向他们发送一封电子邮件,要求他们列入白名单。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-02-27
      • 2020-12-18
      • 1970-01-01
      • 1970-01-01
      • 2018-03-03
      • 1970-01-01
      相关资源
      最近更新 更多