我们的网站上有一个 PHP 表单,已经使用了多年。当用户填写表格时,会将详细信息发送给我们,并向他们发送电子邮件,然后将用户重定向到“谢谢”页面。但是,如果用户将他们的电子邮件地址设置为 @gmail.com,则表单无法发送,它不会显示感谢页面。
这真的很奇怪。我们正在使用 PHPMailer 并验证表单是否已通过以下方式发送:
if($mail->Send()) {
$mailsent = true;
如果用户输入@hotmail.com 或@yahoo.com 一切都很好。但是输入 @gmail.com 和 $mailsent 总是错误的。
在这种情况下,问题出在哪里?在我看来,我们的网络主机与 Gmail 的 SMTP 连接失败了。这看起来对吗?
这是代码:
<?php
error_reporting(E_ALL);
ini_set("display_errors", 1);
$name = '';
$email = '';
$mailsent = false;
$referer = '';
if(isset($_POST['name'])){
include('phpmailer/class.phpmailer.php');
$name = $_POST['name'];
$email = $_POST['email'];
$subject = 'Quote request from ' . $name;
$body = 'A quote request has been received from a user with following details:' . "\n\n" .
"Name: $name \n" .
"Email: $email \n" .
"----------------------------------------------------\n\n" .
"Place: UK".
$body .= "\n----------------------------------------------------\n\n";
$body .= "Refering: ".$referer." \n";
$mail = new PHPMailer();
$mail->Subject = $subject;
$mail->From = $email;
$mail->FromName = $name;
$mail->Body = $body;
$mail->AddAddress("dean@example.com", "Example");
if($mail->Send()) {
$mailsent = true;
} else {
$error[] = 'There was some error. Please try later.';
}
}
?>