【问题标题】:PHP mail() how to set sender mailPHP mail() 如何设置发件人邮件
【发布时间】:2013-07-27 05:48:11
【问题描述】:

这是我的代码:

$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);

代码有效,它发送电子邮件。 但是发件人不是我定义的那个。 发件人似乎是网络邮件主机。 我做错了什么?

【问题讨论】:

  • 尝试使用与From 相同的电子邮件地址添加Reply-to
  • 顺便说一下,上面示例中 From 标头上的 \r\n 不会转换为换行符序列,因为您使用的是单引号。不知道这是否是你的全部问题,但它可能没有帮助:)
  • 回复工作,但现在我得到了我的邮件帐户,但在@之后没有我的主机。我仍然得到 webmailhost。有什么想法吗?
  • 您在 from 位周围使用 's。 \r\n 变成文字。试试改成$header .= "From: from@mail.com\r\n";

标签: php email


【解决方案1】:

尝试设置信封发件人,以及在邮件标题中设置发件人,如下所示:

$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' 的邮件。但是我收到的邮件来自 noreply@mywebhostdomainname.com 而不是 noreply@mydomainname.com。有什么想法吗?
  • 奇怪,这并没有解决问题。在您的 php.ini 中,您对 sendmail_from 和 sendmail_path 的设置是什么?
  • 我使用的是付费主机,我不确定如何以及是否可以访问 php.ini
  • 像这样创建一个简短的 php 脚本,这将显示 php.ini 中定义的所有环境变量: phpinfo(); ?>
  • 设置为:sendmail_from - 无值,sendmail_path - /usr/bin/sendmail -t -i
猜你喜欢
  • 2017-02-02
  • 2014-09-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-13
  • 2016-10-04
  • 2012-03-17
相关资源
最近更新 更多