7

在 php.net 示例中mail(),使用了两个不同的地址$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和标题信息),这真的让我很生气!?

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

4

3 回答 3

2

建议您使用PHP Mailer类而不是内部mail()函数。使用PHP Mailer有几个原因:

  • 使用自己的smtp的能力
  • 更好的机会不在垃圾邮件中列出 (主要原因)
  • 易于使用
于 2012-08-21T14:32:56.050 回答
1

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

Mail-Envelope 不知道 To、Cc 或 BCc;他们都是接受者。

Mail-Headers 是为了让收件人知道谁也收到了邮件。

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

于 2012-08-13T12:10:51.333 回答
1

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

如下:

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

$subject = 'Subject';

mail($to,$subject,$message);
于 2012-08-13T12:18:37.753 回答