0

似乎当您使用 SmtpClient 类和 MailMessage 发送电子邮件时,一切正常。它确实发送它。但是,某些服务器,例如您的企业 Exchange Server 或 Gmail.com 或其他服务,有时会拒绝这些电子邮件(因为它们可能是网络钓鱼站点或垃圾邮件站点?)

我正在使用这个,很多地方都拒绝了我相信的电子邮件:

SmtpClient smtp = new SmtpClient
{
 Host = smtpClient,
 Timeout = 40000, // 40 seconds
 DeliveryMethod = SmtpDeliveryMethod.Network
};

你如何解决这个问题?您是否必须使用某些已识别/列入白名单的服务器的登录凭据才能获得授权和受信任的电子邮件?

我可以使用 GMAIL 身份验证之类的东西,但我的服务器应该被允许发送电子邮件,它不应该依赖 gmail。

4

4 回答 4

4

很久以前,Internet 上有许多服务器提供电子邮件服务,而无需询问太多关于谁在使用该服务的问题。
然后是垃圾邮件发送者!.
一个在世界各地自由发送邮件的服务器不再是互联网的恩人,而是一个问题。
现在越来越难找到在 Internet 上发送邮件而不要求提供凭据的服务器。

您的电子邮件服务器(smtp.yourbusiness.com 或任何您想要的)不信任您。当您要求它为您发送电子邮件时,它想知道您是谁。

SmtpClient smtp = new SmtpClient  
smtp.Host = "smtp.yourbusiness.com"; 
NetworkCredential credentials = new NetworkCredential("your_user_name_on_smtpserver", "your_password_on_smtpserver"); 
smtp.Credentials = credentials; 
于 2012-04-16T19:07:28.420 回答
2

您是否设置了发件人邮件地址,您的邮件服务器可以通过反向 dns 查找来解析吗?一些垃圾邮件过滤器不信任他们无法反向查找的邮件服务器。例如,如果您让您的邮件服务器使用虚假或外国邮件域发送邮件,垃圾邮件过滤器可能会选择它并过滤您的邮件。如果您为您的域设置了 SPF 记录,而您的发送邮件服务器不在该记录中,则来自该服务器的邮件通常也会被垃圾邮件过滤器过滤掉。另一个原因可能是来自已知由互联网提供商动态分配的范围的 IP 地址。从这些地址范围发送的邮件服务器大多是垃圾邮件机器人,因此通常也会被过滤。

于 2012-04-16T19:07:11.537 回答
0

要发送 GMail,您需要指定一些设置 - 是的,您需要使用身份验证(GMail 不会向所有人开放他们的中继,否则他们会被用于发送垃圾邮件)。

如果我没记错的话,您需要在 TCP 端口 587 上发送,启用 SSL,托管mail.google.com并提供用户名和密码SmtpClient以让 Gmail 实际发送它 - 忽略其中一个通常会从他们那里生成一封电子邮件,告诉您您的内容我忘记了。

编辑:只是为了澄清用户名和密码位;您需要使用您的 GMail 帐户的用户名和密码创建一个新的NetworkCredential,并将您的Credentials属性设置SmtpClient为此。

于 2012-04-16T19:00:34.927 回答
0

如果我正确解释了您的问题:消息是从您的服务器发送给我们的,但它们被困在接收端的垃圾邮件过滤器中?

如果这是问题所在,则与您发送消息的方式无关,而与消息的内容和服务器的特性有关。因此,无论您使用什么凭据,或者您是否使用 SmtpClient 或任何其他类发送它都无关紧要。迁移到 Gmail 并没有帮助,而且 Gmail 对您可以发送的邮件数量有限制。

垃圾邮件过滤器,如垃圾邮件刺客使用规则。匹配太多:您的邮件被视为垃圾邮件。

看看这里的例子:

http://spamassassin.apache.org/tests_3_3_x.html

因此,请确保您的消息不会得到太高的分数,它会通过。

于 2012-04-16T19:53:33.800 回答