所以我有一个使用phpmailer的联系表单。它会从一个Gmail帐户向另一个帐户发送电子邮件。但我似乎无法收到接收电子邮件的接收电子邮件。
该脚本托管在cpanel(RivalHost)上,域名在GoDaddy上。我问RivalHost他们是阻止SMTP连接还是阻止端口587或465,他们说他们不是。所以我不知道是什么导致了这个问题。该脚本在我的本地主机上完全正常,而不是在cpanel上
继承邮件脚本:
<?php
$result="";
if(isset($_POST['submit'])){
require 'phpmailer/PHPMailerAutoload.php';
$mail = new PHPMailer;
$mail->Host='smtp.gmail.com';
$mail->Port=465;
$mail->SMTPAuth=true;
$mail->SMPTSecure='ssl';
$mail->Username='[email protected]';
$mail->Password='*********';
$mail->setFrom('[email protected]');
$mail->addAddress('[email protected]');
$mail->addReplyTo($_POST['email'],$_POST['name']);
$mail->isHTML(true);
$mail->Subject='Contact: '.$_POST['subject'];
$mail->Body='Message: '.$_POST['msg'].'</h1>';
if(!$mail->send()){
$result='something went wrong';
echo $result;
} else {
$result="thank you";
echo $result;
}
}
?>
我还被要求检查我的MX记录,但不确定要将它们更改为什么,或者我是否需要更改它们:
MX 0 ********.com 3599 RBL
解决方案1:PHPMailer使用异常。您可以将代码放在try / catch块中,以获取导致电子邮件无法发送的异常。
$mail = new PHPMailer(true); //defaults to using php "mail()"; the true param means it will throw exceptions on errors, which we need to catch
try {
//Email information comes here
$mail->Send();
echo "Message Sent OK\n";
} catch (phpmailerException $e) {
echo $e->errorMessage(); //Pretty error messages from PHPMailer
}
解决方案2:您是否也在使用CSF防火墙?如果是,请检查是否启用了“SMTP_BLOCK”设置。如果启用SMTP_BLOCK,则联系托管以禁用它。
将其添加到您的设置:
$mail->isSMTP();
$mail->SMTPDebug = 2;
$mail->SMTPAuth = true;
if (!$mail->send()) {
echo 'Mailer Error: ' . $mail->ErrorInfo;
} else {
echo 'Message sent!';
}