我正在从我的.net应用程序发送帐户激活电子邮件。
我将发件人地址设置为“xyz.support@gmail.com”,名称为“xyz”,其中xyz是域名,即我们的网站。
当我们使用Google的SMTP服务器时,这不是问题,因为我在发送过程中向Google提供了凭据。但现在我使用自己的网络服务器的SMTP发送电子邮件。
当我在gmail中查看激活电子邮件时,我明白了:
此消息可能尚未发送者:xyz.support@gmail.com了解详情报告网上诱骗
有没有办法摆脱这种情况,以便gmail和其他客户端不显示此消息?
以下是代码:
var smtpClient = new SmtpClient();
var message = new MailMessage();
smtpClient.Host = _config.SMTPServer;
message.From = new MailAddress("xyz.support@gmail.com", "xyz");
message.To.Add("newuser@gmail.com");
message.IsBodyHtml = true;
message.Subject = "Test subject";
message.Body = "Test Body";
smtpClient.Send(message);
由于
答案 0 :(得分:3)
FROM地址的域必须与发送电子邮件的SMTP服务器的域匹配,否则您的邮件将被视为垃圾邮件。
这解释了为什么您可以通过Google的SMTP服务器发送“错误”。
答案 1 :(得分:1)
suggestion by IrishChieftain使用SPF帮助了我,所以这里是我所做步骤的摘要:
1。)首先,我还收到了我从我的服务器发送的GMail收件箱中的电子邮件,其中包含 "This message may not have been sent by..." warning 。
2。)接下来,我查看了GMail内部电子邮件的来源(点击邮件旁边的箭头并选择"显示原始文件")。摘录自:
收到SPF:失败(google.com:我的域名@ mydomain.com 不会 指定 211.113.37.19 作为允许的发件人)client-ip = 211.113.37.19;
所以Google直接告诉我该怎么做:在我的域名的DNS中添加一些SPF记录" mydomain.com"摆脱这个警告。
3。)因此我登录了DNS提供商的控制面板并添加了两条TXT记录,如下所示:
*.mydomain.com. 180 v=spf1 +a +mx ip4:211.113.37.19 -all
mydomain.com. 180 v=spf1 +a +mx ip4:211.113.37.19 -all
请注意,我在三个单独的字段中输入了每一行:
*.mydomain.com.
180
的一个字段(TTL,我的示例中为3分钟)v=spf1 +a +mx ip4:211.113.37.19 -all
4。)之后,我等了一段时间,试图重新发送。这成功了。谷歌现在显示原文:
收到-SPF:传递(google.com:Received-SPF的域:传递(google.com:域名为me@mydomain.com,指定为211.113.37.19为允许的发件人)client-ip = 211.113.37.19;
请注意,我选择SPF版本,因为邮件服务器与Web服务器位于不同的计算机上,因此我无法执行其他solution as Mulmot wrote。
还有一个SPF Wizard from Microsoft可以正确生成SPF记录。或者,这是yet another SPF generator。