SMTP显示成功,但电子邮件永远不会被提供C#

时间:2017-12-11 21:22:23

标签: c# .net smtp

好的,所以我有这个代码,当有人注册我的网站时发送电子邮件。电子邮件可以很好地发送到Gmail帐户或我的工作帐户,但不会显示在我的Hotmail帐户或Outlook帐户中。我联系了运行我正在使用的SMTP服务器的人,他们说他们的日志显示电子邮件发送没有问题。我甚至让一个伙伴使用我的确切代码创建一个测试应用程序,他的电子邮件发送并显示就好了。有没有人猜测为什么电子邮件可以用于Gmail,但也许没有出现在hotmail中,即使我们的服务器显示它们已成功发送?

我看了一遍,似乎无法找到解决方案,甚至是有同样问题的人。

编辑:我已经检查了垃圾邮件/垃圾邮件文件夹。他们也没有出现在那里。

1 个答案:

答案 0 :(得分:3)

即使作为一名顾问在过去22年中为客户解决这个问题,我也不能轻易解决您的问题,但也许我可以指出您正确的方向。

邮件从客户端到达目的地的方式是一长串邮件服务器。如果查看邮件标题,就可以看到服务器链。

  1. 发件人的邮件客户端
  2. 发件人的邮件服务器
  3. 0+发送方的其他邮件服务器/网关
  4. 收件人的上游提供商(可选)(可能是被动的)
  5. 收件人的垃圾邮件过滤服务器
  6. 收件人的邮件网关(有时结合5或7)
  7. 收件人的邮件服务器
  8. 收件人的邮件客户端
  9. 这些服务器中的每一个都将具有过滤消息的规则。这些可以基于许多不同的东西(客户端IP,发送服务器IP,发件人域,黑名单等)

    我怀疑正在发生的事情是:

    1. 客户端发送到服务器 - 确定
    2. 发送服务器(可能通过其他服务器)发送到Hotmail网关 - 确定
    3. Hotmail网关队列消息以进行扫描
    4. 扫描程序会扫描邮件,并因某种原因将其丢弃。
    5. 您的代码认为它没问题,因为它从本地服务器获得了OK。
    6. 那么,我们能做些什么呢?还有几个测试:

      1. 尝试在MailMessage对象上填写更多字段。一些垃圾邮件扫描程序对空字段很挑剔。特别是填写ReplyToList(只需使用与From相同)。确保所有字段都不为空/空(检入调试器)。

      2. 我假设您目前正从开发机器发送?如果是这样,请尝试为其获取不同的IP地址。如果是笔记本电脑,这很容易。从有线切换到无线,反之亦然。在紧要关头,您可以借用某人的USB->以太网适配器。这将更改标头中的源IP地址并更改邮件的扫描方式。

      3. 从您的代码发送的同一台计算机上的普通邮件客户端向Hotmail发送邮件。确保使用相同的传出服务器/用户名/密码。如果它被传递,请查看标题以查看您可以找到的内容。将其与gmail收到的邮件标题进行比较。如果它没有,至少你可以肯定地排除你的代码。

      4. 尝试从Hotmail向您的服务器发送邮件。路径可能不完全相同,但同样,标题可能为您提供线索。

      5. 如果您有权访问发送邮件服务器日志,那么也可能有线索。

      6. 如果您感到绝望,请使用其他外发邮件服务器。