заголовок почты в php не работает - PullRequest
1 голос
/ 19 ноября 2010

Пожалуйста, помогите мне, у меня проблемы с отправкой почтового сообщения в формате html с использованием php mail() Я думаю, что проблема заключается в заголовке.Я включил два заголовка с небольшой разницей только в одинарных или двойных кавычках:

заголовок 1:

$headers = 'From: webmaster@example.com\r\n Reply-To: webmaster@example.com';
$headers .= '\r\nContent-Type: multipart/alternative; boundary="'.$random_hash.'"'; 

Когда я использую одинарные кавычки, как указано выше, всемой HTML-код печатается по почте в виде простого текста без надлежащего HTML-форматирования.Кроме того, мой заголовок показан все перепутано со всем после пропущенного \r\n.

заголовок 2:

$headers = "From: webmaster@example.com\r\nReply-To: webmaster@example.com";
$headers .= "\r\nContent-Type: multipart/alternative; boundary=\"".$random_hash."\"";

Используя этот, я получаю идеальный заголовок, нотеперь мое письмо отправлено пустым с пустым вложением.Я не знаю, откуда это происходит, поскольку я ничего не прикрепляю к своей почте.

Пожалуйста, предложите, что делать

Ответы [ 5 ]

5 голосов
/ 19 ноября 2010

Если вы используете одинарные кавычки в строках PHP, экранирующие символы, такие как \ r \ n, перестанут работать.

Я не уверен, как помочь с вашим вложением без дополнительного контекста.

4 голосов
/ 19 ноября 2010

Мне не нравится php mail.Я рекомендую использовать XpertMailer: http://www.xpertmailer.com/ сделать отличную работу.

3 голосов
/ 19 ноября 2010
  • Используйте библиотеку
  • Не изобретайте колесо, если не можете его закруглить.
  • Используйте библиотеку !
0 голосов
/ 19 ноября 2010

Если вы на самом деле не определяете две версии (открытый текст / HTML) с границами, состоящими из нескольких частей, вам следует изменить тип содержимого: multipart / альтернативный тип содержимого для вашего почтового тела.

Дополнительнобиблиотеки, такие как PHPMailer и т. д., как правило, предпочтительнее, чем встроенная в PHP функция mail(), потому что они обеспечивают гораздо большую гибкость и не требуют ручного создания сложных заголовков.

0 голосов
/ 19 ноября 2010

Это то, что я использовал перед переходом на phpmailer.Как уже упоминалось, используйте библиотеку.

// Make email headers
$separator = '--==Multipart_Boundary_'.md5(time());
$eol = PHP_EOL;

$filepath = "filename.pdf";
// open pdf file
$handle = fopen($filepath, "r");
// read pdf file
$f_contents=fread($handle,filesize($filepath));
// encode read pdf file
$attachment = chunk_split(base64_encode($f_contents));
// close pdf file
fclose($handle);
$message = "Text goes here";

// main header (multipart mandatory)
$headers = "MIME-Version: 1.0".$eol;
$headers .= "Content-Type: multipart/mixed; boundary=\"".$separator."\"".$eol;
$headers .= "Content-Transfer-Encoding: 7bit".$eol;
$headers .= "X-Priority: 1 (Highest)".$eol;
$headers .= "X-MSMail-Priority: High".$eol;
$headers .= "Importance: High".$eol;

// message
$headers .= "--".$separator.$eol;
$headers .= "Content-Type: text/plain; charset=utf-8".$eol;
$headers .= "Content-Transfer-Encoding: 8bit".$eol.$eol;
$headers .= $message.$eol;

// attachment
$headers .= "--".$separator.$eol;
$headers .= "Content-Type: application/pdf; name=".$filename.$eol;
$headers .= "Content-Transfer-Encoding: base64".$eol;
$headers .= "Content-Disposition: attachment; filename=".$filename.$eol.$eol;
$headers .= $attachment.$eol.$eol;
$headers .= "--".$separator."--";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...