我花了整个上午在互联网上寻找关于这个问题的解决办法。我已经在Windows 8.1上安装了wamp服务器,并尝试使用sendmail(http://glob.com.au/sendmail/)和我的gmail账户发送邮件。
当我将sendmail配置为使用端口号465时,我总是会收到以下错误:Socket Error #10060连接超时。
如果我尝试使用端口号587,则在错误日志中会出现“连接已正常关闭”的提示。但是没有发送电子邮件。
以下是我的sendmail.ini文件。
当我将sendmail配置为使用端口号465时,我总是会收到以下错误:Socket Error #10060连接超时。
如果我尝试使用端口号587,则在错误日志中会出现“连接已正常关闭”的提示。但是没有发送电子邮件。
以下是我的sendmail.ini文件。
[sendmail]
smtp_server=smtp.gmail.com
;I tried both: 587, 465
smtp_port=587
; I tried: "blank, auto ssl, tls, none"
smtp_ssl=
error_logfile=error.log
debug_logfile=debug.log
auth_username=myaccoun@gmail.com
auth_password=mypass
hostname=localhost
以下是php.ini文件
[mail function]
smtp_port = 465
sendmail_path="C:\wamp\sendmail\sendmail.exe -t"
mail.add_x_header = On
Apache上启用了ssl_module,而php使用了php_open_ssl和php_socket扩展。
我也尝试使用stunnel,但没有成功。
编辑于2014年1月27日
我在sendmail.ini中设置了smtp_port = 465和smtp_ssl = ssl。此外,我设置了sendmail.exe必须作为Windows XP SP3程序运行。完成后,在Windows控制台上运行sendmail.exe时,可以正确发送电子邮件。但是,当wamp尝试发送邮件时,我在sendmail的错误日志中收到此错误:Socket Error # 10060连接超时。
这是我用来测试sendmail的代码:
<?php
$email = "mymail@gmail.com";
$to = "mymail@gmail.com";
$subject = "Hi!";
$body = "Hi,How are you?";
$headers = 'From: ' .$email . "\r\n".'Reply-To: ' . $email. "\r\n".'X-Mailer: PHP/' . phpversion();
if (mail($to, $subject, $body, $headers)) echo("<p>Email successfully sent</p>");
else echo("<p>Email delivery failed</p>");
?>
hostname=localhost
,请尝试将其注释掉。 - RiggsFolly[mail function]
部分的php.ini
文件中添加以下行:mail.log = "c:\wamp\logs\php_mail.log"
,这将打开邮件日志记录并有助于识别问题。 - RiggsFolly