我尝试过以下方面但收效甚微:
$fromEmail = "something.com <noreply@something.com>\r\n";
$headers = 'From: '.$fromEmail;
$headers .= 'Reply-To: '.$fromEmail;
$headers .= 'Return-Path: '.$fromEmail;
$headers = 'MIME-Version: 1.0' . '\n';
$headers .= 'Content-type: text/html; charset=iso-8859-1' . '\r\n';
if(mail($to, $subject, $message, $headers)) { echo "1"; exit; }
我尝试评论Reply-To:
和Return-Path:
行,并将if(...
行替换为:
if(mail($to, $subject, $message, $headers,'-fnoreply@something.com')) { ...
在所有情况下,电子邮件都会到达,但来自anonymous@...
答案 0 :(得分:3)
您的代码中存在语法错误。
您在MIME标题行中缺少一个点。
应该是:
$headers = 'From: '.$fromEmail;
$headers .= 'Reply-To: '.$fromEmail;
$headers .= 'Return-Path: '.$fromEmail;
$headers .= 'MIME-Version: 1.0' . '\n';
<...>
答案 1 :(得分:2)
看起来像匿名@ ...是你的信封“来自”地址。信封“发件人”地址与电子邮件“发件人:”标题中显示的地址不同。这是sendmail在其“MAIL FROM / RCPT TO”中与接收邮件服务器交换使用的内容。它被称为“信封”地址的主要原因是出现在邮件标题和正文之外,在邮件之间的原始SMTP交换中服务器
要更改unix上的“from”地址信封,请为sendmail二进制文件指定“-f”选项。您可以通过在“sendmail_path”命令行中添加“-r”选项在php.ini中全局执行此操作。您也可以通过将-f mail@something.com作为附加参数参数传递给mail()函数(第5个参数),从PHP中以编程方式执行此操作。
在php.ini中,您可以像这样添加默认地址
sendmail_from = me@something.com
答案 2 :(得分:1)
要从更改信封邮件,您可以使用第五个参数。这用于应该直接传递给sendmail
的选项。在这里,您应该添加-f info@mywebaddress.com
。一个简单的例子如下所示。
mail('recipient@domain.com', 'Subject', 'Message',
'From: info@myaddress.info','-f info@myaddress.info');
而且,the official PHP manual on mail()
中提到了所有这些。