我有以下代码:
require 'bin\PHPMailerAutoload.php';
$mail = new PHPMailer();
$mail->isSMTP();
$mail->SMTPDebug = 2;
$mail->Host = 'smtp.gmail.com';
$mail->SMTPSecure = 'tls';
$mail->Port = 587;
$mail->From = "[an e-mail address]@gmail.com";
$mail->AddAddress("[an e-mail address]@gmail.com");
$mail->msgHTML(file_get_contents('contents.html'), dirname(__FILE__));
$mail->AltBody = 'sprava';
if (!$mail->send()) {
echo "Mailer Error: " . $mail->ErrorInfo;
} else {
echo "Message sent";
}
以下是回复:
2014-06-11 15:46:34 SERVER
-> CLIENT: 220 mx.google.com ESMTP v47sm60079970eel.22 - gsmtp 2014-06-11 15:46:34 CLIENT
-> SERVER: EHLO localhost 2014-06-11 15:46:34 SERVER
-> CLIENT: 250-mx.google.com at your service, [95.103.53.55] 250-SIZE 35882577 250-8BITMIME 250-STARTTLS 250-ENHANCEDSTATUSCODES 250 CHUNKING 2014-06-11 15:46:34 CLIENT
-> SERVER: STARTTLS 2014-06-11 15:46:34 SERVER
-> CLIENT: 220
2.0.0 Ready to start TLS Warning: stream_socket_enable_crypto(): this stream does not support SSL/crypto in C:\dev\localhost_www\bin\class.smtp.php on line 262 2014-06-11 15:46:34 CLIENT
-> SERVER: QUIT 2014-06-11 15:46:44 SERVER
-> CLIENT: 2014-06-11 15:46:44 SMTP ERROR: QUIT command failed: SMTP connect() failed. Mailer Error: SMTP connect() failed.
我该如何解决?我用php.ini
文件尝试了这个但是没有成功。
答案 0 :(得分:4)
解决这部分错误的关键:
- >客户:220 2.0.0准备启动TLS警告:stream_socket_enable_crypto():此流不支持SSL /加密 C:\ dev \ localhost_www \ bin \ class.smtp.php,电话:2014年2月26日 15:46:34客户
这意味着您的本地PHP设置没有启用php_openssl.dll
。您可以通过进入php.ini
&找到一个如下所示的行:
; extension=php_openssl.dll
取消注释:
extension=php_openssl.dll
保存,重启Apache&一切都应该好。
如果您想确保编辑正确的php.ini
文件,请在您的网络根目录中创建名为phpinfo.php
的文件。然后将以下命令放在那里:
phpinfo();
然后通过这样的网络浏览器加载phpinfo.php
;更改http://localhost/
以匹配您的服务器网址:
http://localhost/phpinfo.php
当该页面加载时,它将显示所有服务器的PHP设置。查找标有Loaded Configuration File
的行并更改其中加载的php.ini
。