垃圾邮件发送邮件

时间:2012-05-29 04:41:18

标签: c# asp.net mysql web-services email

我在C#中使用asp.net webservice在给定的mailid上发送邮件作为参数。

邮件已发送,但它显示为垃圾邮件,而不是收件箱邮件。

我使用了以下代码;

.NET代码:

public int SendMail(string mailto, string username, string password)
    {
        try
        {
            string mailFrom = "test@gmail.com";
            string siteName = "www.XYZ.com";
            MailAddress fromAddress = new MailAddress(mailFrom, siteName);
            SmtpClient mailClient = new SmtpClient();

            MailMessage message = new MailMessage();
            message.From = fromAddress;
            message.To.Add(mailto);

            message.Subject = "Your User Name and Password";
            message.IsBodyHtml = true;

            mailClient.Host = "relay-hosting.secureserver.net";
            mailClient.UseDefaultCredentials = false;
            mailClient.EnableSsl = false;

            string body = "<HTML><BODY><CENTER><H2>Your User Name  :'" + username + "' </H2><BR/><H2>Your Password :'" + password + "' </H2></CENTER></BODY></HTML>";

            message.Body = body;

            mailClient.Send(message);

            return 1;
        }
        catch (Exception ex)
        {
            return 0;
        }
    }

WEB.CONFIG CODE:

    <system.net>
    <mailSettings>
        <smtp from="test@gmail.com">
            <network host="relay-hosting.secureserver.net" />
        </smtp>
    </mailSettings>
  </system.net>

可能是什么问题?

谢谢..

4 个答案:

答案 0 :(得分:2)

收件人的提供商或您正在使用的中继服务器将MailMessage的内容识别为垃圾邮件列入黑名单。如果您使用的是relay-hosting.secureserver.net,则可能就是这种情况。我建议使用比GoDaddy更受信任的中继提供商。

答案 1 :(得分:2)

您的FROM地址是GMAIL.COM,您不是从GMAIL服务器发送电子邮件,而是从其他服务器发送电子邮件。使用DomainKeys Identified Mail(DKIM)和发件人策略框架(SPF),现在可以(并且大多数系统管理员都可以)在域的DNS记录中为该域指定授权的电子邮件发送服务器。这样,当电子邮件收件人服务器收到电子邮件时,它可以通过检查电子邮件发送服务器以及在发件人域的DNS中提到的授权服务器列表来检查电子邮件源的真实性。如果它不匹配,那么根据发件人域名的系统管理员在其DNS记录中设置或指定的规则,电子邮件可能会被彻底拒绝或作为垃圾邮件保存在垃圾邮件文件夹中。

我想这就是发生的事情。您还应该在发送电子邮件之前使用http://www.mxtoolbox.com/blacklists.aspx服务检查发送服务器(SMTP)凭据。

答案 2 :(得分:2)

如果您发送的IP地址没有您声称来自的域的有效SPF记录,则该电子邮件可能会显示为垃圾邮件。在此示例中,“”relay-hosting.secureserver.net“没有有效的IP地址作为gmail的SMTP服务器。

尝试从您将在现实生活中使用的实际域名发送测试,而不是“test@gmail.com”。

如果它仍然被标记为垃圾邮件,则很容易为测试@ youractualdomain.com 添加SPF记录。这是一个过去帮助我的网站:http://www.zytrax.com/books/dns/ch9/spf.html

答案 3 :(得分:1)

有几件事情在共同提高您的电子邮件的垃圾邮件分数。请记住,这不是垃圾邮件/非垃圾邮件,而是“垃圾邮件分数”,超过该分数,您的电子邮件将被接收服务器标记为垃圾邮件。

我猜你的案例中的因素如下:

  • 没有替代短信的HTML正文
  • 发件人地址与
  • 发送的实际服务器邮件不符
  • 从地址不存在
  • SMTP服务器(relay-hosting.secureserver.net)声誉不佳
  • 没有SPF或domainKey记录

解决方案也有以下几点:

  • 创建邮件的备用文字版本并将其包含在正文中(this answer说明如何执行此操作)
  • 使用从
  • 发送电子邮件的服务器上实际存在的发件人地址
  • 为您的SMTP服务器使用信誉良好的提供商,例如SendgridpostmarkAppMailjet
  • 指定SPF和DomainKeys DNS记录允许接收服务器将您的消息标识为来自正确的服务器
祝你好运!