无法使用PHP发送电子邮件

时间:2013-07-17 11:55:04

标签: php ssl smtp moodle starttls

预览: 我一直在尝试使用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上配置localhost smtp服务器” = php.ini中的smtp.gmail.com。

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

1 个答案:

答案 0 :(得分:2)

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

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

因此,您有两种选择:

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

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

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