我正在尝试使用mail()函数从我的网站向我的Gmail帐户发送电子邮件。这工作正常,但问题是,当我收到我的Gmail帐户收件箱中的邮件(不是垃圾邮件)时,有一个'?'标记而不是常规的空白个人资料图片。当我将鼠标悬停在“?”上方时标记,弹出一条消息说:“Gmail无法验证mywebsite.com是否实际发送了此消息(而不是垃圾邮件发送者)”。我已经添加了两个这个问题的图片。我联系了我的托管服务提供商,他们告诉我这是一个与脚本相关的问题。他们通过点击我的Gmail收件箱中的“显示原始文件”来分析我得到的文件。他们说,问题发生的原因是gmail收到的“来自”电子邮件地址是“cpanel-username@server-hostname.com”而不是“myemail@website.com”。我必须用“myemail@website.com”替换“cpanel-username@server-hostname.com”。我尝试了很多,但无法更改“从”标题。我的代码是这样的
$Email = "myemail@gmail.com";
$message = "Hello!!";
$headers = "From: Mywebsite <noreply@mywebsite.com>";
$sentmail = mail("$Email",'Something Important',"$message",$headers);
请注意,“noreply@mywebsite.com”是我在cpanel中创建的真实电子邮件地址。我也试过phpmailer来解决这个问题,但我没有成功。我的phpmailer代码就像这样
require 'mailer/PHPMailerAutoload.php';
$mail = new PHPMailer;
$mail->isMail(); // I also tried $mail->isSMTP(), but it does not work. Just keeps loading the page but never completes.
$mail->Host = 'localhost';
$mail->SMTPAuth = true;
$mail->Username = 'noreply@mywebsite.com';
$mail->Password = '****************';
$mail->SMTPSecure = 'tls';
$mail->Port = 365;
$mail->setFrom('noreply@mywebsite.com', 'Mywebsite');
$mail->addAddress('myemail@gmail.com');
$mail->isHTML(true);
$mail->Subject = 'Something Important';
$mail->Body = 'Hello!!';
if(!$mail->send()) {
echo 'Message could not be sent.';
echo 'Mailer Error: ' . $mail->ErrorInfo;
} else {
echo 'Message has been sent';
}
但这也无法解决我的问题。在gmail中收到邮件时,from标头仍为“cpanel-username@server-hostname.com”。请有人帮我解决这个问题。
答案 0 :(得分:0)
您可以将-f user@domain.tld添加到php.ini中的mail.force_extra_parameters行。 请参阅此处提供的解决方案它帮助了我。 https://forums.cpanel.net/threads/email-sent-as-username-hostname.601655/