我正在尝试从PHP发送电子邮件,虽然它正在运行,但我注意到我在电子邮件的“发件人”部分收到了很多额外的东西。额外的东西,我假设,是 来自我服务器的信息?
例如,如果$from = "myname"
,而不是"myname"
只是来自字段中的电子邮件,我会得到类似的内容:
myname@p3nlhg.phx3.secureserver.net
这是我正在玩的PHP,重要的部分是我的$from
var:
$from = "myname";
mail($to,$formSubj,$formMssg,$from);
老实说,这就是我所拥有的,没有或多或少(就$from
而言)。我该如何清理它或使其成为只有$from
的简单值(在这种情况下是"myname"
)出现?
答案 0 :(得分:2)
根据mail
documentation,您使用$from
作为$additional_headers
参数。
相反,请将$from
更改为适当的标头。例如,
$from = "myname";
$headers = "From: $from <user@example.com>";
mail($to, $formSubj, $formMssg, $headers);
根据additional_headers
的文档,
发送邮件时,邮件 必须 包含 发件人 标题。可以使用
additional_headers
参数进行设置,也可以在php.ini中设置默认值。如果不这样做,将导致类似于警告:mail()的错误消息:&#34; sendmail_from&#34;未设置在php.ini或custom&#34; From:&#34;标题丢失。 发件人 标头在Windows下也设置了 Return-Path 。
答案 1 :(得分:2)
邮件功能的第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参数的一个好处是你可以用它来指定其他不太常见的字段。 e.g:
$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
)。简单的换行不起作用。
答案 2 :(得分:-1)
它来自您已安装在服务器中的邮件服务器,尝试切换到另一个邮件服务器,如postfix,courier或其他。