PHPMailer:“无法连接到SMTP主机”

时间:2012-05-16 20:12:18

标签: php smtp phpmailer

$email_message = "Form details below.\n\n";

function clean_string($string) {
    $bad = array("content-type","bcc:","to:","cc:","href");
    return str_replace($bad,"",$string);
}

$email_message .= "Full Name: ".clean_string($_POST['full_name'])."\n";
$email_message .= "Email: ".clean_string($_POST['email'])."\n";
$email_message .= "Telephone number: ".clean_string($_POST['telephone'])."\n";
$email_message .= "Message: ".clean_string($_POST['comments'])."\n";


$mail             = new PHPMailer();
$body             = $email_message;
$body             = str_replace('\\', '', $body);

$mail->IsSMTP(); // telling the class to use SMTP
$mail->SMTPAuth   = true;             // enable SMTP authentication
$mail->SMTPSecure = "ssl";            // sets the prefix to the servier
$mail->Host       = "smtp.gmail.com"; // sets GMAIL as the SMTP server
$mail->Port       = 465;              // set the SMTP port for the GMAIL server
$mail->Username   = "xxx@gmail.com";  // GMAIL username
$mail->Password   = "XXXXXX";         // GMAIL password

$mail->SetFrom('from-email@domain.com', 'First Last');

$mail->Subject    = "Imperia";

$mail->AltBody    =                   // optional, comment out and test
    "To view the message, please use an HTML compatible email viewer!";

$mail->MsgHTML($body);

$address = "xxx@gmail.com";
$mail->AddAddress($address, "To Name");

if(!$mail->Send()) {

    echo "<font color='red'> Message error </font>". $mail->ErrorInfo;
} else {
    echo "<font color='red'> Message sent </font>";
} 

我正在使用此代码尝试使用SMTP发送电子邮件,但我有一个错误:

  

SMTP错误:无法连接到SMTP主机

有人能告诉我这里有什么问题吗?我找不到解决这个问题的方法。感谢

8 个答案:

答案 0 :(得分:3)

我也碰到了这个,daemoni的解决方案对我有用。更具体地说,我将代码更改为:

$mail->Host = gethostbyname("smtp.gmail.com"); 

答案 1 :(得分:2)

昨天我遇到了类似的问题,结果发现smtp.gmail.com正在解析到IPv6地址,然后一切都或多或少地从那里被打破了。

我的解决方法是输入IPv4地址而不是smtp.gmail.com

(在我的案例中,173.194.79.108,我不确定这是否是全球性的,所以也许ping一次获得IP)

这是一个临时解决方案,但可能会持续很长时间。

答案 2 :(得分:1)

&#34;无法连接到SMTP主机&#34;告诉您,您没有从源服务器连接到您要定位的服务器,在本例中为smtp.gmail.com。

可能的原因是

  • 阻止防火墙
  • PHP不允许进行此类连接

如果您可以在端口465(从托管PHP代码的服务器)连接到smtp.gmail.com,请使用telnet进行测试。

另外,我假设你有enabled required extensions

答案 3 :(得分:1)

发生了类似的错误并且必须打开&#34;访问不太安全的应用程序&#34; gmail帐户中的功能。

您可以在帐户设置中找到。

答案 4 :(得分:0)

$mailer->Host = 'ssl://smtp.gmail.com:465';

答案 5 :(得分:0)

检查这些事情

  1. 检查php.ini行extension = php_openssl.dll
  2. 关闭防火墙。它可能阻止了ssl连接。

答案 6 :(得分:0)

检查php.ini line extension = php_openssl.dll并关闭防火墙。它可能阻止了ssl连接。

答案 7 :(得分:0)

从whm禁用SMTP限制,然后尝试