1个月前,此代码是工作正常的网站,其主机是由"godaddy"提供的,现在主机是由不同的服务器"namecheap"续订域后,此错误发生在发送邮件。我更新了PHPMailer文件,但没有发生。
遇到未捕获的异常类型:phpmailer异常
邮件:SMTP错误:下列收件人失败:www.example.com:"您的IP地址:***...:abc@gmail.com: "Your IP:.***.*.: Your domain gmail.com is not allowed in header From"
文件名:/favicon/文件名
行号:1585
回溯:
文件名://directory_path/phpmailer/类. phpmailer.php行:1337功能:短信发送
文件:/home/目录/文件名:1215功能:发送后
文件://目录_路径/视图/contact.php行:34功能:发送
文件:/目录_路径/控制器/Contact.php行:7功能:视图
$name= $_POST["name"];
$email = $_POST["email"];
$msg = $_POST["msg"];
require "phpmailer/PHPMailerAutoload.php";
$mail = new PHPMailer(true);
$mail->isSMTP();
$mail->Host = "mail.domain_name.com";
$mail->port = 465;
$mail->SMTPAuth=true;
$mail->SMTPSecure = 'tls';
$mail->Username = "info@example.com";
$mail->Password = '********';
$file_name = $_FILES["attc"]["name"];
$tmp_name = $_FILES["attc"]["tmp_name"];
$path = $_SERVER['DOCUMENT_ROOT'].'/application/views/upload_images/';
move_uploaded_file($tmp_name, $path.$file_name);
$mail->setFrom($email, $name);
$mail->addAddress('abc@gmail.com','Mail Header');
$mail->addReplyTo($email, $name);
$mail->isHTML(true);
if($file_name != '' && $file_name != null){
$mail->AddAttachment($_SERVER['DOCUMENT_ROOT']."/application/views/upload_images/".$file_name,$file_name);
}
$mail->Subject = "Info From Web";
$mail->Body = '<strong>' .$msg . '</strong><br><br><h3>Regard : '.$name.'</h3>';
if ($mail->send()) {
echo "<script>alert('Email Sent Success!')</script>";
}
else{
echo "<script>alert('".$mail->ErrorInfo."')</script>";
}
1条答案
按热度按时间jvlzgdj91#
您试图从一个gmail地址发送邮件而不通过gmail服务器。这是伪造的,将被google的SPF规则阻止,正如您所发现的。如果您想从一个gmail地址发送邮件,您必须通过一个gmail服务器发送。
真实的的问题是你将from地址设置为submitter的地址。不要这样做,因为你会遇到你所看到的问题。将你自己的地址放在from地址中,并将submitter的地址放在reply-to地址中。关于如何做,请参见the contact form example provided with PHPMailer。