您的域名gmail.com不允许出现在标题为

时间:2019-01-31 08:46:36

标签: phpmailer

此代码在由“ godaddy”提供托管的网站上正常工作的前1个月,现在在更新域后由不同的服务器“ namecheap”更新托管,此错误发生在发送邮件期间。 我更新了PHPMailer文件,但没有任何反应。

遇到未捕获的异常 类型:phpmailerException

消息:SMTP错误:以下收件人失败:abc@gmail.com:“您的IP: < / em> :标头“发件人”中不允许使用您的域gmail.com

文件名:/Directory_path/phpmailer/class.phpmailer.php

行号:1585

回溯:

文件:/Directory_path/phpmailer/class.phpmailer.php 线:1337 功能:smtpSend

文件:/home/Directory_path/phpmailer/class.phpmailer.php 线:1215 功能:postSend

文件:/Directory_path/views/contact.php 行:34 功能:发送

文件:/Directory_path/controllers/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 个答案:

答案 0 :(得分:1)

您正尝试从Gmail地址发送邮件,而不通过Gmail服务器发送邮件。正如您所发现的,这是伪造的,将被Google的SPF规则阻止。如果要从gmail地址发送邮件,则必须通过gmail服务器发送邮件。

真正的问题是您正在将“发件人”地址设置为提交者的地址。不要那样做,因为您将遇到的问题正好存在。将您自己的地址放入发件人地址,然后将提交者的地址放入回复地址。有关如何操作,请参见the contact form example provided with PHPMailer