XAMPP - 连接超时(无法连接到主机)

时间:2015-03-18 14:37:41

标签: php apache xampp host

我使用的是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执行 但它仍然没有工作 如果有人可以帮助我,那就适用

1 个答案:

答案 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

文件夹结构

enter image description here

<强> 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步验证,它也会失败。还有很多其他错误。它将显示错误

<强>结果

enter image description here

可选:我关闭Windows防火墙以防万一,但您没有。

如果您仍有问题,请告诉我。我将非常乐意为您提供帮助