$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主机
有人能告诉我这里有什么问题吗?我找不到解决这个问题的方法。感谢
答案 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。
可能的原因是
如果您可以在端口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)
检查这些事情
答案 6 :(得分:0)
检查php.ini line extension = php_openssl.dll并关闭防火墙。它可能阻止了ssl连接。
答案 7 :(得分:0)
从whm禁用SMTP限制,然后尝试