0

我正在尝试从 PHP 发送电子邮件,虽然它正在工作,但我注意到我在电子邮件的“发件人”部分收到了很多额外的东西。我假设额外的东西是来自我的服务器的信息?

例如,如果$from = "myname",而不是"myname"仅按原样通过来自字段的电子邮件,我会得到如下信息:

myname@p3nlhg.phx3.secureserver.net

这是我正在玩的 PHP,重要的部分是我的$fromvar:

$from = "myname";

mail($to,$formSubj,$formMssg,$from);

老实说,这就是我所拥有的,不多也不少(就目前$from而言)。我怎样才能清理它或使它只有$from在这种情况下的普通值才会"myname"出现?

4

3 回答 3

2

mail 函数的第 4 个参数不能这样工作。它期望标题信息。要实现您想做的事情,请使用:

$header = "From: myname <no-reply@test.com> \r\n";
mail($to,$formSubj,$formMssg,$header);

你也不应该使用孤独myname的。您需要一个有效的电子邮件地址字符串:myname <no-reply@test.com>no-reply@test.com. 如果您只是myname输入 ,PHP 会尝试将其解释为电子邮件地址。这就是为什么你得到myname@p3nlhg.phx3.secureserver.net. p3nlhg.phx3.secureserver.net必须是您的服务器的主机名。

header 参数的一个好处是您可以使用它来指定其他不太常见的字段。例如:

$headers  = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
$headers .= 'From: Birthday Reminder <birthday@example.com>' . "\r\n";
$headers .= 'Cc: birthdayarchive@example.com' . "\r\n";
$headers .= 'Bcc: birthdaycheck@example.com' . "\r\n";

\r\n请注意,您需要在每个标题属性的末尾放置一个回车/换行 ( )。简单的换行将不起作用。

于 2012-05-31T04:19:15.397 回答
2

根据mail文档,您将$from其用作$additional_headers参数。

相反,更改$from为适当的标题。例如,

$from = "myname";
$headers = "From: $from <user@example.com>";
mail($to, $formSubj, $formMssg, $headers);

根据文档additional_headers

发送邮件时,邮件必须包含From标头。这可以通过additional_headers参数设置,也可以在 php.ini 中设置默认值。

不这样做将导致类似于警告的错误消息:mail(): "sendmail_from" not set in php.ini or custom "From:" header missingFrom标头还设置了 Windows 下的Return-Path 。

于 2012-05-31T04:07:52.557 回答
-1

它来自您在服务器中安装的邮件服务器,尝试切换到另一个,如 postfix、courier 或其他。

于 2012-05-31T04:03:29.247 回答