【问题标题】:CentOS 6: cannot send email with PHPMailer but ok on laptopCentOS 6:无法使用 PHPMailer 发送电子邮件,但在笔记本电脑上可以
【发布时间】:2015-04-08 11:57:37
【问题描述】:

我正在设计一个阿里云网站。该网站包含使用 PHPMailer 发送电子邮件的功能。它可以在我的笔记本电脑(运行 XAMPP 的 Mac Book Air)上完美运行,但不能在具有完全相同 php 文件(SMTP 主机、密码……)的实时服务器(新的 CentOS 6)上运行。以下是我从 PHPMailer 以详细模式获得的日志:

2015-04-08 02:59:42 Connection: opening to smtp.mywebsite.com:587, t=300, opt=array (
                                      )
2015-04-08 02:59:42 Connection: opened
2015-04-08 02:59:42 SERVER -> CLIENT: 220 smtp.aliyun-inc.com MX AliMail Server(10.194.100.112)
2015-04-08 02:59:42 CLIENT -> SERVER: EHLO mywebsite.com
2015-04-08 02:59:42 SERVER -> CLIENT: 250-smtp.aliyun-inc.com
                                  250-8BITMIME
                                  250-AUTH=PLAIN LOGIN XALIOAUTH
                                  250-AUTH PLAIN LOGIN XALIOAUTH
                                  250-PIPELINING
                                  250 DSN
2015-04-08 02:59:42 CLIENT -> SERVER: STARTTLS
2015-04-08 02:59:42 SERVER -> CLIENT: 220 Ready to start TLS
2015-04-08 02:59:42 CLIENT -> SERVER: QUIT
2015-04-08 02:59:44 SERVER -> CLIENT:  ��:%4P���pGC#mLa+�%YF�l �0���I
2015-04-08 02:59:44 SMTP ERROR: QUIT command failed:  ��:%4P���pGC#mLa+�%YF�l �0���I
2015-04-08 02:59:44 Connection: closed
2015-04-08 02:59:44 SMTP connect() failed.

虽然我花了很多时间在互联网上寻找解决方案,但我无法弄清楚问题出在哪里......我正在使用最新版本的 PHPMailer 并且命令行中的函数 mail 运行良好(我的意思是我收到了它们),那么问题出在哪里?

提前非常感谢!

Alplob

【问题讨论】:

  • “许多小时”显然不包括阅读PHPMailer's docs
  • 奇怪的是,您的服务器没有宣传 STARTTLS,但还是接受了该命令!也很奇怪,它在不需要 STARTTLS 的情况下宣传 AUTH。我会说邮件服务器的配置看起来很糟糕。
  • 感谢您的回答。实际上,这似乎是中国的一个普遍问题。许多人在使用 phpMailer 和 Alicloud 服务器时遇到问题(即phpernote.com/php-template/430.htmlcloudbbs.org/forum.php?mod=viewthread&tid=20506),但我无法解决它......
  • 禁用stream_socket_client 但仍然允许fsockopen 是没有意义的。第二个例子是使用旧版本的 PHPMailer,这没有帮助,如果您需要进行这样的更改,正确的方法是子类化库并覆盖您想要更改的内容 - 您永远不应该编辑库本身,因为它破坏了您的升级能力。总体而言,您似乎正在使用一个残缺的 PHP 构建,与一个配置错误的邮件服务器通信,所以我对代码有问题并不感到惊讶!我建议找一个还不错的 ISP!
  • 非常感谢您的反馈,这让我走上了正轨。我实际上是使用 Remi 存储库中的 PHP 版本来获得最新版本(PHP 5.6),而不是使用官方 CentOS 6 存储库(PHP 5.3)中可用的版本。我回到了官方的,现在它可以工作了!

标签: centos phpmailer centos6


【解决方案1】:

也许,Centos 服务器上没有安装 openssl PHP 扩展。您应该确保安装了 openssl 扩展。要检查已安装的扩展,请在 Centos 上尝试以下命令:

php -i

并在结果文本中查找openssl

【讨论】:

  • 感谢您的回答。我找到了以下几行:openssl openssl OpenSSL support => enabled OpenSSL Library Version => OpenSSL 1.0.1e-fips 11 Feb 2013 OpenSSL Header Version => OpenSSL 1.0.1e-fips 11 Feb 2013 Directive => Local Value => Master Value openssl.cafile => no value => no value openssl.capath => no value => no value
  • 还有那个:Registered Stream Socket Transports => tcp, udp, unix, udg, ssl, sslv3, sslv2, tls, tlsv1.0, tlsv1.1, tlsv1.2
猜你喜欢
  • 2015-09-06
  • 2020-11-25
  • 2019-01-19
  • 2023-03-20
  • 2017-07-19
  • 2017-10-05
  • 1970-01-01
  • 1970-01-01
  • 2015-11-20
相关资源
最近更新 更多