PHP mail()如何设置发件人邮件

14

这是我的代码:

$to = 'to@mail.com';

$subject = 'test';

$body = 'test';

$header  = 'MIME-Version: 1.0' . "\r\n";
$header .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
$header .= "To: <$to>" . "\r\n";
$header .= 'From: from@mail.com \r\n';

mail($to, $subject, $body, $header);

代码可以运行,它发送了邮件。 但发件人不是我定义的那个。 发件人似乎是Web邮件主机。 我做错了什么?


尝试使用与“发件人”相同的电子邮件地址添加“回复”。 - DevlshOne
1
顺便提一下,上面示例中 From 头部的 \r\n 不会转换为换行序列,因为你使用的是单引号。不知道这是否是你整个问题的原因,但它可能没有帮助 :) - Brian Lacy
Reply-to 已经起作用了,但是现在我收到的是我的邮件账户而不是 @ 后面的主机名。我仍然收到 Webmail 主机名。有什么想法吗? - user1885099
你正在使用单引号 ' 包裹 from 位。这将使 \r\n 变成字面量。尝试改为 $header .= "From: from@mail.com\r\n"; - Mark Ormston
我将其更改为 $header .= "Reply-to: noreply@mydomainname.com\r\n";。但是我收到的邮件是来自 noreply@mywebhostdomainname.com - user1885099
1个回答

34

尝试设置信封发件人以及在消息头中设置发件人,如下所示:

$to = "to@to.com";
$from = "from@from.com";
$subject = "subject";
$message = "this is the message body";

$headers = "From: $from"; 
$ok = @mail($to, $subject, $message, $headers, "-f " . $from);   

这并没有改变任何事情。通过将我的原始代码更改为 $header .= "Reply-to: noreply@mydomainname.com\r\n";,我现在从“noreply”接收邮件。但是我收到的邮件是来自于 mywebhostdomainname.com 的 noreply@ 而不是 mydomainname.com 的 noreply@。有什么想法吗? - user1885099
很奇怪这没有解决问题。在你的php.ini文件里,sendmail_from和sendmail_path的设置是什么? - mti2935
我正在使用付费主机,不确定是否可以访问php.ini文件。 - user1885099
创建一个简短的PHP脚本,如下所示,这将显示在php.ini中定义的所有环境变量:<?phpinfo(); ?> - mti2935
使用您的代码:发件人:nobody@abc07.octosquid.com 收件人:my@mail.com 日期:2013年7月26日星期五晚上11:24 主题:主题 - user1885099
显示剩余4条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接