电子邮件转到垃圾邮件文件夹

Irf*_*aza 20 c# asp.net

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

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

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) { }
}
Run Code Online (Sandbox Code Playgroud)

测试时我们发现所有确认邮件都是垃圾邮件文件夹而不是收件箱.

代码有什么问题,还是有任何与安全相关的问题.

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

谢谢你分享你的时间.

Gre*_*ler 29

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

  • 你的内容听起来没有任何理由为贝叶斯分数评分,所以我不认为这是问题所在.尝试删除可能的触发词并不会有什么坏处.

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

  • IsBodyHTML标记为真,但你只是提供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"));
    
    Run Code Online (Sandbox Code Playgroud)
  • 了解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) 
    
    Run Code Online (Sandbox Code Playgroud)
  • 阅读SpamAssassin的默认规则集,因为它可能是大多数过滤器规则集的一个很好的参考.如果您可以确定邮件被标记的原因,则可以修复它.


Tom*_*len 9

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

遗憾的是,这不是编程问题,但我可以理解为什么你会认为它是.该是发送电子邮件,和你报告说,他们已被送往.所以这不太可能是你的代码的问题,因为它完全符合它的目的!

绕过它

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

所有这些元素都有各种各样的算法和指标,用于确定电子邮件是否可能是垃圾邮件.因此,一个人适合所有解决方案是不可能的.有些是聪明的,有些则不那么有些,有些人粗暴地丢弃了大量的电子邮件,其他人纯粹是在"不在白名单上","你没有进入"政策,然后有些人只是让一切都进来而不管内容/产地.

解决这个问题的方法有:

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


小智 5

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


Jos*_*lva 5

这发生在我身上,现在已经解决了,我只需在 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">
Run Code Online (Sandbox Code Playgroud)

现在运行完美