我正在尝试从PHP发送电子邮件,尽管它正在工作,但我注意到我在电子邮件的"发件人"部分收到了很多额外的东西。我假设额外的东西是来自我的服务器的信息?
例如,如果$from = "myname"
,而不是"myname"
只按原样在电子邮件中通过字段,我会得到类似以下内容:
myname@p3nlhg.phx3.secureserver.net
这是我正在使用的PHP,重要的部分是我的$from
变量:
$from = "myname";
mail($to,$formSubj,$formMssg,$from);
老实说,这就是我所拥有的一切,仅此而已(就$from
而言)。我怎样才能清理它或让它只出来 $from
的普通值 ,在这种情况下是 "myname"
,出来?
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
)。简单的换行将不起作用。
根据mail
文档,您使用$from
作为$additional_headers
参数。
相反,请将$from
更改为适当的标头。例如
$from = "myname";
$headers = "From: $from <user@example.com>";
mail($to, $formSubj, $formMssg, $headers);
根据additional_headers
的文档,
发送邮件时,邮件必须包含"发件人"标头。这可以使用
additional_headers
参数设置,也可以在 php.ini 中设置默认值。如果不这样做,将导致类似于警告的错误消息:mail():未在 php 中设置"sendmail_from".ini或缺少自定义"From:"标头。"发件人"标头在 Windows 下也设置了返回路径。
它来自您在服务器中安装的邮件服务器,请尝试切换到另一个,例如后缀,快递或其他东西。