0

我在 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 代码:

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

可能是什么问题?

谢谢..

4

4 回答 4

2

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

于 2012-05-29T04:47:15.380 回答
2

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

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

于 2012-05-29T05:01:21.053 回答
2

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

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

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

于 2012-05-29T05:12:23.880 回答
1

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

我猜想在你的情况下起作用的因素如下:

  • 没有替代文本消息的 HTML 正文
  • 发件人地址与实际服务器不对应 邮件发自
  • 发件人地址不存在
  • SMTP 服务器 (relay-hosting.secureserver.net) 信誉低
  • 没有 SPF 或 domainKey 记录

解决方案也有几点:

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

祝你好运!

于 2012-05-30T06:01:08.307 回答