我使用的是Windows 7,XAMPP控制面板v3.2.1
它应该从localhost发送电子邮件到gmail
我试图使用Php Mailer和Stunnel;
uncommented extension = php_openssl.dll。
但它仍然无法正常工作
php.ini和sendmail.ini的配置
[php.ini - mail function]
SMTP = smtp.gmail.com
smtp_port = 587
;sendmail_from =
sendmail_path ="\"C:\xampp\sendmail\sendmail.exe\" -t"
;sendmail_path="C:\xampp\mailtodisk\mailtodisk.exe"
[sendmail.ini]
smtp_server=smtp.gmail.com
smtp_port=587
smtp_ssl=auto
;default_domain=
error_logfile=error.log
debug_logfile=debug.log
auth_username=********@gmail.com
auth_password=********
;pop3_server=
;pop3_username=
;pop3_password=
force_sender=*******@gmail.com
force_recipient=
hostname=
这是我的测试PHP代码,试图找出原因
$fp = stream_socket_client("smtp.gmail.com:587", $errno, $errstr, 30);
if (!$fp) {
echo "$errstr ($errno)<br />\n";
} else {
while (!feof($fp)) {
echo fgets($fp, 1024);
}
fclose($fp);
}
我得到了这个:
警告:stream_socket_client():在第2行的C:\ xampp \ htdocs \ xxxxxx \ xxxx.php中
获取错误(连接超时。)(10060)
我尝试使用Php邮件进行测试。
require("phpmailer/PHPMailerAutoload.php");
$mail = new PHPMailer();
$mail->IsSMTP(); // send via SMTP
$mail->SMTPAuth = true; // turn on SMTP authentication
$mail->Username = "********@gmail.com"; // Enter your SMTP username
$mail->Password = "********"; // SMTP password
$webmaster_email = "******@gmail.com"; //Add reply-to email address
$email="**********@gmail.com"; // Add recipients email address
$name="*********"; // Add Your Recipient’s name
$mail->From = $webmaster_email;
$mail->FromName = "Webmaster";
$mail->AddAddress($email,$name);
$mail->AddReplyTo($webmaster_email,"Webmaster");
$mail->WordWrap = 50; // set word wrap
$mail->IsHTML(true); // send as HTML
$mail->Subject = "This is your subject";
$mail->Body = "Hi, this is your email body, etc, etc"; //HTML Body
$mail->AltBody = "Hi, this is your email body, etc, etc"; //Plain Text Body
if(!$mail->Send()){
echo "Mailer Error:". $mail->ErrorInfo;
} else {
echo "Message has been sent";
}
它返回 邮件程序错误:SMTP连接()失败。 我试图以管理员身份运行sendmail.exe 并使其作为Windows XP SP 3执行 但它仍然没有工作 如果有人可以帮助我,那就适用
答案 0 :(得分:0)
Ty this,
启用加载扩展OpenSSL(您可以通过编辑php.ini来启用它。)
找到行;extension=php_openssl.dll
并通过从行的开头删除分号(;
)取消注释。
重启Apache(来自XAMPP控制面板)
修改强>
我设置:
操作系统:Windows 7
XAMPP :xampp-win32-5.6.3-0-VC11
PhpMailer :https://github.com/PHPMailer/PHPMailer
文件夹结构:
<强> mail.php 强>:
<?php
require 'phpmailer/PHPMailerAutoload.php';
$mail = new PHPMailer(); // create a new object
$mail->IsSMTP(); // enable SMTP
$mail->SMTPDebug = 1; // debugging: 1 = errors and messages, 2 = messages only
$mail->SMTPAuth = true; // authentication enabled
$mail->SMTPSecure = 'ssl'; // secure transfer enabled REQUIRED for GMail
$mail->Host = "smtp.gmail.com";
$mail->Port = 465; // or 587
$mail->IsHTML(true);
$mail->Username = "email@gmail.com";
$mail->Password = "password";
$mail->SetFrom("email@gmail.com");
$mail->Subject = "Test";
$mail->Body = "hello";
$mail->AddAddress("email@gmail.com");
if (!$mail->Send()) {
echo "Mailer Error: " . $mail->ErrorInfo;
} else {
echo "Message has been sent";
}
如您所见,我设置$mail->SMTPDebug = 1;
这将逐步显示(调试模式)因此您可以看到是否有错误。
错误可能是,密码错误,或者如果您使用Google 2步验证,它也会失败。还有很多其他错误。它将显示错误
<强>结果强>
可选:我关闭Windows防火墙以防万一,但您没有。
如果您仍有问题,请告诉我。我将非常乐意为您提供帮助