【问题标题】:SMTP shows success, but email never is delivered C#SMTP 显示成功,但电子邮件从未送达 C#
【发布时间】:2017-12-12 21:53:36
【问题描述】:

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

我找遍了,似乎找不到解决方案,甚至找不到遇到同样问题的人。

编辑:我检查了垃圾邮件/垃圾邮件文件夹。他们也不会出现在那里。

【问题讨论】:

  • ...但是您已经证明代码没有问题。它成功到达并通过您的 SMTP 服务器,在这种情况下,错误超出了此范围。你确定它不只是垃圾吗?
  • 垃圾邮件拦截/来源或转发拒绝?如果没有异常,邮件服务器(或者更确切地说是 a)中继服务器会接受它。从那里下游在运输途中迷路了..
  • 我每次测试时都会检查垃圾邮件。
  • 祝你好运,但问题不在于你已经证明的代码。

标签: c# .net smtp


【解决方案1】:

即使在过去 22 年里,作为一名顾问,我一直在为客户解决这类问题,但我对您的问题并没有一个简单的答案,但也许我可以为您指明正确的方向。

一封邮件从客户端到达目的地的方式是一长串邮件服务器。如果您查看消息头,您可以看到服务器链。

  1. 发件人的邮件客户端
  2. 发件人的邮件服务器
  3. 0+ 发送方的其他邮件服务器/网关
  4. 收件人的上游提供商(可选)(可能是被动的)
  5. 收件人的垃圾邮件过滤服务器
  6. 收件人的邮件网关(有时与 5 或 7 组合)
  7. 收件人的邮件服务器
  8. 收件人的邮件客户端

这些服务器中的每一个都将具有过滤消息的规则。这些可以基于许多不同的事物(客户端 IP、发送服务器 IP、发件人域、黑名单等)

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

  1. 客户端发送到服务器 - 好的
  2. 发送服务器发送(可能通过其他服务器)到 Hotmail 网关 - 好的
  3. Hotmail 网关将邮件排队等待扫描
  4. 扫描程序扫描邮件,并出于某种原因将其丢弃。
  5. 您的代码认为没有问题,因为它从本地服务器获得了 OK。

那么,我们能做些什么呢?更多测试:

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

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

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

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

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

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

【讨论】:

  • 还有哪些外发邮件服务器?
  • 这是一个非常依赖网络的问题。由于各种原因(安全、负载、位置等),较大的网络可能有多个,而较小的网络可能没有。
猜你喜欢
  • 1970-01-01
  • 2013-06-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-21
  • 1970-01-01
  • 2021-06-17
  • 2016-04-17
相关资源
最近更新 更多