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

时间:2012-08-13 11:44:52

标签: php email html-email email-headers

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);
?>

所以我的问题是:您需要为$to的语法提供mail(),但是您不能使用格式Name <email@domain.com>,这只能在附加标题信息中执行,正确?

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

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

3 个答案:

答案 0 :(得分:2)

建议您使用PHP Mailer课程而不是内部 mail()功能。使用PHP Mailer有几个原因:

  • 能够使用您自己的 smtp
  • 更好的机会不会被列为垃圾邮件 (主要原因)
  • 轻松使用

答案 1 :(得分:1)

$ to-Parameter描述了Envelope-Recipient(谁将收到邮件)。 to-Header基本上是用于显示谁收到邮件的电子邮件应用程序。

Mail-Envelope不知道To,Cc或BCc;他们都是收件人。

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

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

答案 2 :(得分:1)

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

如下:

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

$subject = 'Subject';

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