php.net 手册中的 mail():“to”和“to-header”之间的区别

Posted

技术标签:

【中文标题】php.net 手册中的 mail():“to”和“to-header”之间的区别【英文标题】:mail() from php.net manual: difference between "to" and "to-header" 【发布时间】:2012-08-09 15:26:37 【问题描述】:

mail()php.net 示例中,$to 使用了两个不同的地址以及附加的标题信息“To: ...”:

<?php
// multiple recipients
$to  = 'aidan@example.com' . ', '; // note the comma
$to .= 'wez@example.com';

$subject = 'Birthday Reminders for August';

// message
$message = '<html> ... </html>';

// To send HTML mail, the Content-type header must be set
$headers  = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";

// Additional headers
$headers .= 'To: Mary <mary@example.com>, Kelly <kelly@example.com>' . "\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";

// Mail it
mail($to, $subject, $message, $headers);
?>

所以我的问题是:mail()的语法你需要提供$to,但是你不能使用Name &lt;email@domain.com&gt;的格式,你只能在附加的头信息中这样做,对吧?

首先,为什么 php.net 上的示例将邮件发送给 4 个不同的人(因为他们对 $to 和标题信息使用不同的电子邮件地址),这真的让我很生气!?

其次,如果我只想将邮件发送给 1 人(并且只有 1 次)并且我想使用格式 Name &lt;email@domain.com&gt;,我应该怎么做?在$to 以及标题信息中使用它?然后此人会收到两次电子邮件吗?

【问题讨论】:

【参考方案1】:

$to-Parameter 描述了信封收件人(谁会收到邮件)。 to-Header 基本上是用于电子邮件应用程序以显示谁收到了邮件。

邮件信封不知道收件人、抄送或密送;他们都是收件人。

邮件标题是为了让收件人知道谁也收到了邮件。

一些邮件服务器将邮件发送到所有给定的地址(包括:$to 和 to-header),一些忽略 to-header。

【讨论】:

Some Mail-Servers send the mail to all given adresses (both: $to and to-header), some ignore the to-header. -> 所以,它基本上意味着只使用$to? 由于我主要使用 PHP 向一个收件人发送邮件,所以我还没有尝试过。 我尝试在两者中都使用收件人,但我收到了两次邮件。但是,我读到 $to 不支持格式 Name &lt;email@domain.com&gt; 到 100%...奇怪...【参考方案2】:

您不需要指定 to 标头。 在 $to 变量中设置名称也可以。

如下:

$to = 'Name <email@address.tld>';
$message = 'Message';

$subject = 'Subject';

mail($to,$subject,$message);

【讨论】:

【参考方案3】:

建议您使用PHP Mailer 类代替内部ma​​il() 函数。使用PHP Mailer 有几个原因:

能够使用自己的 smtp 更好的机会获得不在垃圾邮件中列出 (主要原因) 易于使用

【讨论】:

是的,刚刚发现了这个问题(被列为垃圾邮件);)实际上只是在阅读关于批量发送消息的谷歌指南,所以感谢您对此的确认! :)

以上是关于php.net 手册中的 mail():“to”和“to-header”之间的区别的主要内容,如果未能解决你的问题,请参考以下文章

php mail()

PHP短路偷懒评测,php.net手册在哪里?

使用Windows 8.1在localhost上测试PHP的mail()函数[关闭]

学习笔记——mail发送javax.mail.AuthenticationFailedException: failed to connect at javax.mail.Service.connec

如何不在php中静态调用函数?

PHP 中的 RFC1123 和 RFC2822 日期时间格式有啥区别?