mail
函数发送电子邮件。邮件已经发送,但信封中的MAIL FROM
(例如nobody@conniptin.internal)是Apache_user@localhostname
,因此一些远程邮件服务器会拒绝它,因为该域不存在(显然)。在使用mail
时,我能否强制更改信封中的MAIL FROM
?编辑:如果我在
mail
()函数的第四个字段中添加一个标头,则会更改消息正文中标头的From
字段,但不会更改信封中的MAIL FROM
。我可以通过生成带有
sendmail -t -odb -oi -frealname@realhost
的sendmail并将电子邮件内容传输到其中来强制执行此操作。这是更好的方法吗?是否有更好、更简单、更适合PHP的方法?
编辑:最重要的是我应该阅读手册。感谢大家的答案,第五个参数有效,一切都很好。
safe_mode
已经自 PHP 5.3.0 起被弃用 [参考 http://php.net/manual/en/features.safe-mode.php]。因此,如果您的共享主机服务仍然使用它,您可以向其技术支持提出投诉。当 PHP 的safe_mode
为Off
时,Lucas Oman 的答案完美适用。 - Marco Demaioini_set('sendmail_from','yourmail@example.com');
。 - Simon East