以联系方式,它在localhost中正常工作。虽然托管它不起作用。显示错误
**"SMTP -> ERROR: Failed to connect to server: Connection timed out (110) The following From address failed: xxxxx@gmail.com ERROR"**
我附上了contact_submit.php代码表格
include_once('class.phpmailer.php');
$mail->IsSMTP(); //
$mail->Host = "smtp.gmail.com";
$mail->SMTPDebug = 1;
$mail->SMTPAuth = true;
$mail->Host = "smtp.gmail.com";
$mail->Port = 587;
$mail->Username = "xxxx@gmail.com";
$mail->Password = "xxxx@123";
$mail->SMTPSecure = "tls";
$mail->SetFrom($email, $name);
$mail->AddReplyTo($email,$name);
$mail->Subject = "Contact - xxx";
$mail->AltBody = "To view the message, please use an HTML compatible email viewer!";
$mail->MsgHTML($body);
$mail->AddAddress("xxx@gmail.com","xxx");
if(!$mail->Send())
{
echo $mail;
echo "Mailer Error: " . $mail->ErrorInfo;
}
else
{
echo '<META HTTP-EQUIV="Refresh" Content="0; URL=contact.php?id='.$id.'&send=success">';
exit;
}
我使用的是phpmailer 5.2.1。
我联系了托管方,但我没有得到实际回复。
答案 0 :(得分:2)
我相信您必须在端口465上连接到smtp.gmail.com,而不是端口587.此外,还需要SSL。所以,你应该:
$mail->Host = "smtp.gmail.com";
$mail->Port = 465;
$mail->SMTPSecure = "ssl";
答案 1 :(得分:1)
我遇到了类似的问题,邮件是从我的本地服务器正确发送的,但不是我在互联网上发送的邮件。结果我的主机(Bluehost)阻止了端口465上的传出连接。
我找到了一个很棒的how-to,它为我修复了它:
答案 2 :(得分:1)
您可以通过以下代码添加代码来增加超时时间:
set_time_limit(3600);
然后指定$mail
对象的超时:
$mail->Timeout = 3600;