预览: 很长一段时间以来,我一直在尝试使用 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()),因为服务器会继续说“本地主机 smtp 服务器不能在端口 25 上配置”,尽管我已经设置了 SMTP =smtp.gmail.com 在 php.ini 中。
如有任何帮助,我们将不胜感激。 提前致谢。
最佳答案
您已经为邮件服务器配置了端口 25。
您收到的错误消息表明它无法连接到 localhost:25
。
因此你有两个选择:
- 在本地主机端口 25 上安装/正确配置 SMTP 服务器
- 将配置更改为您可以连接到的不同端口:
- TLS/STARTTLS 端口:587
- SSL 端口:465
此支持forum thread可能会有帮助。
关于php - 无法使用 PHP 发送电子邮件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17699149/