显示名称而不是电子邮件的电子邮件标头的格式是什么?

2022-08-30 09:39:05

我正在尝试创建一个php脚本,该脚本将使用mySQL数据库为我处理邮件列表,并且我已将其大部分到位。不幸的是,我似乎无法使标头正常工作,我不确定问题是什么。

$headers='From: noreply@rilburskryler.net \r\n';
$headers.='Reply-To: noreply@rilburskryler.net\r\n';
$headers.='X-Mailer: PHP/' . phpversion().'\r\n';
$headers.= 'MIME-Version: 1.0' . "\r\n";
$headers.= 'Content-type: text/html; charset=iso-8859-1 \r\n';
$headers.= "BCC: $emailList";

我在接收端得到的结果是:

“noreply”@rilburskryler.net rnReply-To: noreply@rilburskryler.netrnX-Mailer: PHP/5.2.13rnMIME-Version: 1.0


答案 1

要显示姓名(而不是显示电子邮件地址),请使用以下命令:

"John Smith" <johnsemail@hisserver.com>

容易。

关于换行符,这是因为您将文本括在撇号而不是引号中:

$headers = array(
  'From: "The Sending Name" <noreply@rilburskryler.net>' ,
  'Reply-To: "The Reply To Name" <noreply@rilburskryler.net>' ,
  'X-Mailer: PHP/' . phpversion() ,
  'MIME-Version: 1.0' ,
  'Content-type: text/html; charset=iso-8859-1' ,
  'BCC: ' . $emailList
);
$headers = implode( "\r\n" , $headers );

答案 2

单个带引号的字符串中,只有转义序列 和 分别替换为 和。您需要使用双引号来获取转义序列,并由相应的字符替换:\'\\'\\r\n

$headers = "From: noreply@rilburskryler.net \r\n";
$headers.= "Reply-To: noreply@rilburskryler.net\r\n";
$headers.= "X-Mailer: PHP/" . phpversion()."\r\n";
$headers.= "MIME-Version: 1.0" . "\r\n";
$headers.= "Content-type: text/html; charset=iso-8859-1 \r\n";
$headers.= "BCC: $emailList";

您还可以使用数组来收集标头字段,并在以后将它们放在一起:

$headers = array(
    'From: noreply@rilburskryler.net',
    'Reply-To: noreply@rilburskryler.net',
    'X-Mailer: PHP/' . phpversion(),
    'MIME-Version: 1.0',
    'Content-type: text/html; charset=iso-8859-1',
    "BCC: $emailList"
);
$headers = implode("\r\n", $headers);

推荐