【问题标题】:Unable to Send Email Using PHP无法使用 PHP 发送电子邮件
【发布时间】:2013-07-15 23:14:28
【问题描述】:

预览: 我一直在尝试使用 Moodle 发送电子邮件很长时间,最后决定使用标准的 PHP mail() 函数来测试发送电子邮件,以测试邮件是否正常工作。

但即使 PHP 也不会发送电子邮件!!

问题场景:

这是我的 PHP 代码:

$to = "receiver@gmail.com";
$subject = "Test mail";
$message = "Hello! This is a simple email message.";
$from = "username150@gmail.com";
$headers = "From:" . $from;
ini_set( "sendmail_from", "username@gmail.com" ); 
ini_set( "SMTP", "smtp.gmail.com" );  
ini_set( "smtp_port", "25" );
ini_set("username","username0@gmail.com"); 
ini_set("password","password");
mail($to,$subject,$message,$headers);
echo "Mail Sent.";

我得到的错误是:

    Warning: mail() [function.mail]: SMTP server response: 530 5.7.0 Must issue a STARTTLS                command first. sz6sm10013088pab.5 - gsmtp in C:\Program Files (x86)\Moodle\server\moodle\user\edit.php on line 252

我已经使用 Telnet 测试了我的 gmail 服务器,它在端口 25 上监听良好。 我已经完成了这个错误和其他相关帖子告诉我的所有事情

试过:“ssl://smtp.gmail.com”,但它只会给出以下错误:

    Warning: mail() [function.mail]: Failed to connect to mailserver at  "ssl://smtp.gmail.com" port 25, verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set() in C:\Program Files (x86)\Moodle\server\moodle\user\edit.php on line 252

即使 openssl.dll 在 PHP.ini 中已取消注释。

 ;extension=php_tidy.dll
 extension=php_xmlrpc.dll
 ;extension=php_openssl.dll;

另外,我已经配置了 php.ini 文件(php.ini-production 和 php.ini-development 也是):

[mail function]
; For Win32 only.
; http://php.net/smtp
SMTP = smtp.gmail.com
; http://php.net/smtp-port
smtp_port = 25

; For Win32 only.
; http://php.net/sendmail-from
;sendmail_from = username@gmail.com

但是将它添加到 php.ini 并没有太大的区别(因此我求助于 set_ini()),因为服务器会继续说“无法在端口 25 上配置 localhost smtp 服务器”虽然我已经设置了 SMTP =smtp.gmail.com 在 php.ini 中。

对此的任何帮助将不胜感激。 提前致谢。

【问题讨论】:

  • 尝试使用 PORT nº 465 或 587... 参见此处:support.google.com/mail/answer/13287?hl=en
  • 感谢您的回复。不,不工作。它卡在同一个错误上。
  • 您能否通过运行 phpinfo(); 检查 openssl 是否正确加载?不久前,我在 openssl.dll 上遇到了类似的问题,我使用的其中一个扩展(如果我没记错的话是 php_exif)与 openssl 扩展冲突
  • 你在本地机器上吗?
  • 感谢 lePunk,在运行 phpinfo() 时我究竟在哪里/查找什么?

标签: php ssl smtp moodle starttls


【解决方案1】:

您已经为邮件服务器配置了端口 25。

您收到的错误消息表明它无法连接到localhost:25

因此你有两个选择:

  1. 在 localhost 端口 25 上安装/正确配置 SMTP 服务器
  2. 将配置更改为您可以连接到的其他端口:

  • TLS/STARTTLS 端口:587
  • SSL 端口:465

此支持forum thread 可能会有所帮助。

【讨论】:

  • 感谢您的回复伙伴。我浏览了论坛主题。我有一个正在工作的 smtp.gmail.com 服务器在端口 25 和端口 587 上监听(这是 TLS/STARTTLS 所必需的)。我已经在 php.ini 中配置了这些设置。
猜你喜欢
  • 2013-09-04
  • 2012-08-31
  • 2014-01-05
  • 2013-09-19
  • 2011-04-21
  • 2012-10-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多