Каков формат заголовков электронной почты, которые отображают имя, а не электронную почту? - PullRequest
46 голосов
/ 05 сентября 2010

Я пытаюсь создать скрипт 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-версия: 1.0

Ответы [ 3 ]

107 голосов
/ 05 сентября 2010

Чтобы иметь имена, в отличие от указанных адресов электронной почты, используйте следующее:

"John Smith" <johnsemail@hisserver.com>

Easy.

Относительно прерывистых разрывов строк, потому что вы заключаете текст в апострофы, а не в кавычки:

$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 );
10 голосов
/ 05 сентября 2010

Внутри строки в одиночных кавычках только escape-последовательности \' и \\ заменяются ' и \ соответственно.Вам нужно использовать двойные кавычки для замены escape-последовательностей \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);
0 голосов
/ 05 сентября 2010
    $to = 'SendersName@domain.com';
    $to .=', ' . $_POST['Femail'];
    $subject = 'Contact Us Form';

// message
$message ="<html>
<head>
<title>Email title</title>
</head>
<body>
<h3>important message follows</h3>
<div>
     you are being brought this email to be safe.
</div>
</body>
</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: SendersEmailName <SendersEmailName@domain.com>' . "\r\n";
    $headers .= 'From: YourName <YourName@domain.com>' . "\r\n";
    $headers.='X-Mailer: PHP/' . phpversion()."\r\n";
    $headers.= "BCC: $emailList";


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