无法使用PHP发送电子邮件

3

预览: 我一直在尝试使用 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

尽管在PHP.ini中取消了openssl.dll的注释,但是仍然存在一些问题。
 ;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服务器”,尽管我已经在php.ini中设置了SMTP = smtp.gmail.com。
如有帮助,将不胜感激。 提前致谢。

尝试使用端口号465或587...请查看此处:https://support.google.com/mail/answer/13287?hl=en - Eleazan
谢谢您的回复。不好意思,还是不行。它仍然卡在同一个错误上。 - tbdei
请问您能否通过运行phpinfo()来检查openssl是否正确加载?我之前遇到过类似的openssl.dll问题,其中我使用的一个扩展(如果我记得正确的话是php_exif)与openssl扩展发生了冲突。 - lePunk
你在本地机器上吗? - Ghilas BELHADJ
谢谢lePunk,我应该在哪里/如何查看运行phpinfo()的信息? - tbdei
1个回答

2

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

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

因此,您有两个选择:

  1. 在本地主机上安装/正确配置SMTP服务器以使用25号端口。
  2. 更改配置以连接到其他端口:

.

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

这个支持论坛帖子可能会有所帮助。


谢谢你的回复,伙计。我已经阅读了论坛帖子。我有一个工作中的smtp.gmail.com服务器,监听端口25和端口587(这是TLS / STARTTLS所需的)。我已在php.ini中配置了这些设置。 - tbdei

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接