【问题标题】:Problems sending email with PHP on Linux在 Linux 上使用 PHP 发送电子邮件的问题
【发布时间】:2014-08-31 15:28:46
【问题描述】:

我创建了一个脚本,用于在客户下订单时通过电子邮件向他们发送订单确认信息。这是一个简单的 PHP mail() 脚本。这也在共享的 linux 主机上完成。

我的问题是脚本会被接收 10 次,然后会在很长一段时间内停止接收(任何电子邮件帐户),然后突然又开始再次接收。

我已经就这个问题联系了我的房东,他们告诉了我一些我认为由于无知而造成的错误的事情。首先是电子邮件可能被电子邮件提供商阻止。如果是这样的话,我不会想象 10 个会通过 3 个不同的电子邮件服务器(aol、gmail、hotmail)然后突然停止。他们还说他们的电子邮件是分批发送的,我认为这不适用于客户脚本。如果是这种情况,当我运行脚本一半的时间时,它们不会立即收到。此外,在任何主机都没有收到电子邮件的干喷期间,这些电子邮件永远进来。第三,他们告诉我使用他们的 webformmailer.php,它将使用他们的批量电子邮件系统。问题是,他们的 webformmailer 只允许我向一个预定的电子邮件发送电子邮件(因为我必须在控制面板中设置它)。

所以我有几个问题:这个问题在多大程度上与我的主机、我的脚本和电子邮件提供商有关?有哪些修复可以使电子邮件更可靠?我一直在尝试一些电子邮件库,例如 swiftmailer,但它们似乎并没有改善这种情况。

【问题讨论】:

  • 电子邮件服务器如果在短时间内收到大量电子邮件/如果用户将您的电子邮件标记为垃圾邮件,则可以免费将您的电子邮件标记为垃圾邮件
  • @user3791372 我明白这一点,但我已明确将它们标记为在 3 个单独的提供商上受信任,它们都可以很好地接收它们,然后都停止在完全相同的时间接收它们并开始再次接收它们完全相同的时间,让我相信是我的主机限制了它们。

标签: php sendmail


【解决方案1】:

如果您在共享主机上,请不要使用mail(),它永远不会按照您想要的方式工作,原因如下:

  • 主机通常会限制您可以发送的消息数量,这可能对您共享服务器的每个人都是全局性的。
  • 较大的电子邮件提供商可能已经看到来自您现在使用的 IP 的垃圾邮件,并且可能会限制您的速率。
  • 大型电子邮件提供商也可能只是将您的 IP 列入黑名单,因此某些电子邮件甚至永远不会到达。

如果您有访问权限,请检查您的网络服务器错误日志,mail() 将在那里记录任何错误响应,以便您查看是否从您发送邮件的主机收到了TEMPORARILY DEFERRED

我的建议是使用 SMTP 连接到可以发送消息的电子邮件主机或其他一些外部电子邮件服务。

【讨论】:

  • 我的主人向我发誓他们没有限制阻止它,这就是我认为实际发生的事情。如果电子邮件提供商阻止了它,为什么他们在 3 个电子邮件提供商上都可以正常通过(假设他们确实遇到过一次垃圾邮件,我必须制定规则来允许他们)然后突然停止所有 3 个半小时或所以?另外,我将如何在 php 中通过 SMTP 发送邮件?
  • 如果收件人的提供商默认发送垃圾邮件,它可能会通过更具侵入性的垃圾邮件过滤器被捕获。那里有几个库,试试SwiftMailer
  • 我一直在尝试 SwiftMailer,但我的理解是它无法在 Linux 上使用 sendmail 进行 SMTP,这是不正确的吗?你能给我指出正确的方向吗?
  • 特别是 sendmail,不,您必须指定自己的外部 SMTP 服务器,例如 Google 或其他电子邮件服务来发送邮件。
  • 我如何在 Linux 上通过 SwiftMailer 做到这一点?
【解决方案2】:

听起来您的托管服务提供商设置了每分钟/小时的最大电子邮件数量之类的。看起来它被提供商服务器阻止了。

所以一个解决方案是只使用其他 smtp 服务器而不是 mail() 默认值。

【讨论】:

  • 正如我在对 SamT 的评论中所说,我的供应商发誓他们不会限制它,但我不相信他们。我如何在 php 中通过 SMTP 发送电子邮件?
猜你喜欢
  • 1970-01-01
  • 2012-12-27
  • 1970-01-01
  • 2018-12-12
  • 2012-01-02
  • 1970-01-01
  • 2011-09-17
  • 2015-10-16
  • 1970-01-01
相关资源
最近更新 更多