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

时间:2011-02-18 14:12:54

标签: 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) { }
}

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

代码有什么问题,或者是否有任何与安全相关的内容。

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

感谢您分享您的时间。

7 个答案:

答案 0 :(得分:27)

听起来您的电子邮件被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 :(得分:7)

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

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

绕过它

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

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

解决这个问题的方法有:

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

答案 2 :(得分:4)

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

答案 3 :(得分:2)

在创建MailMessage

时,在代码中添加以下行
    msg.BodyEncoding = System.Text.Encoding.GetEncoding("utf-8");

答案 4 :(得分:1)

这件事发生在我身上,现在已经解决了, 我只是在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">

它现在正常运作

答案 5 :(得分:0)

即使对于房屋名称,这种情况也会发生很多。我很同情你,因为你只想要一个纯文本邮件,但如果你的客户真的想要那些电子邮件而你真的想要你的徽标,那么他们就可以白名单列出您的域名,以便所有电子邮件都能通过!

我们使用一家名为mailchimp的公司发送订阅者邮件,我询问他们如何避免使用垃圾邮件过滤器,特别是在基本上是一个广告群体的情况下,很难避免它们,这是他们的建议并且有很多。;

Avoiding the Spam Filters

答案 6 :(得分:0)

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

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

更改文本可以使电子邮件通过垃圾邮件过滤器