PHP邮件,标题和调用mail()函数,有什么覆盖?

时间:2010-03-02 09:33:54

标签: php email header

我一直在用PHP中的低级邮件挣扎,我知道我应该使用一个库,但现在不是一个选项。

在PHP中发送邮件时,您可以手动设置其他标题,例如From,Cc和Bcc,但您也可以设置Subject,To和Body。当您调用该函数时,您将标题传递给mail()函数,但该函数也“请求”主题,正文和To。

我的问题是:PHP如何处理双重意图?如果您手动将标题设置为Subject:foo,但是在调用mail中时传递'foo'作为主题...?

我无法读取C,因此打开PHP源代码可能无法帮助我。

谢谢!

3 个答案:

答案 0 :(得分:1)

这里的问题似乎是,如果您在附加标题中指定“收件人”或“主题”,则会在生成的电子邮件中显示。

如果是这样,那么简单的答案是测试它:

$add_to    ='to: "added" <user@example.com>"; // substituting your email address
$param_to  ='"param" <user@example.com>";
$add_subj  ='subject: Subject in header';
$param_subj='Subject in param';

$add_hdr=$add_to . "\n" . $add_subj;
mail($param_to, $param_subj, "body - test", $add_hdr);

然后看看你收到的消息。

下进行。

答案 1 :(得分:1)

好吧,不需要阅读C,只需测试它:它是一个单行程:)

如果您在两个地方都指定了主题,那么PHP没有什么特别之处:您收到一封带有两个主题标题的电子邮件。哪一个显示在您的电子邮件客户端是我不知道的;也许它是在电子邮件协议中定义的,也许它是每个客户的选择。

关于“To”标题,当您未手动指定标题时,PHP会从$ to参数中设置一个;如果你设置了一个,你的标题就会占上风。

值得注意的是,“发件人”和“收件人”标题对谁发送和接收邮件没有任何影响:它们纯粹是提供信息的。邮件服务器软件要求隐式指定发件人和收件人;不会为此目的解析标头。

答案 2 :(得分:0)

正确的方法 - 不要在标题中使用Subject,To和Body。如果按原样使用标题,可以使用正则表达式从标记中删除它。其他方式 - 您可以使用PEAR库 - http://pear.php.net/manual/en/package.mail.mail-mime.example.php