Обработка HTML-файла шаблона электронной почты и php - PullRequest
2 голосов
/ 19 декабря 2011

Я создал html email welcome.tpl Какой метод php mail мне нужно использовать, чтобы отправить этот файл как тело сообщения? до этого я использовал и включая HTML и текст в переменных

$text_content.= "\r\n";
$text_content.= "--------------------------------\r\n";
$html_content.= "</body></html>";

$mime_boundary = 'Multipart_Boundary_x'.md5(time()).'x';

$headers = "MIME-Version: 1.0\r\n";
$headers.= "Content-Type: multipart/alternative; boundary=\"$mime_boundary\"\r\n";
$headers.= "Content-Transfer-Encoding: 7bit\r\n";

$body = "--$mime_boundary\n";
$body.= "Content-Type: text/plain; charset=\"charset=us-ascii\"\n";
$body.= "Content-Transfer-Encoding: 7bit\n\n";
$body.= $text_content;
$body.= "\n\n";

$body.= "--$mime_boundary\n";
$body.= "Content-Type: text/html; charset=\"UTF-8\"\n";
$body.= "Content-Transfer-Encoding: 7bit\n\n";
$body.= $html_content;
$body.= "\n\n";
$body.= "--$mime_boundary--\n";

$headers.= 'From: So <support@sos.com>' . "\r\n";
$headers.= "X-Sender-IP: $_SERVER[SERVER_ADDR]\r\n";
$headers.= 'Date: '.date('n/d/Y g:i A')."\r\n";
$headers.= 'Reply-To: So <support@sos.com>' . "\r\n";

mail($en['email'], $subject, $body, $headers);

Должен ли я использовать что-то вроде $body = file_get_contents(); и является ли mail(); лучшим методом?

Ответы [ 2 ]

2 голосов
/ 19 декабря 2011

Я бы предложил следующее:

Вы используете расширение .tpl в своем шаблоне, поэтому я предполагаю, что вы используете Smarty в качестве движка шаблонов?

Если нет, то вы можете просто использовать file_get_contents ();

$template = file_get_contents('template.tpl');
$template = str_replace('{name}', 'Sean Nieuwoudt', $template);
$template = str_replace('{email}', 'me@me.com', $template);
...
etc

Просто используйте функцию mail () для отправки электронной почты.

Альтернативным и несколько более надежным способом было бы использовать что-то вроде Postmarkapp для отправки писем.Это гарантирует доставку, где mail () может оказаться в папке спама получателей (особенно если она работает в среде общего хостинга).

С помощью postmark вы можете сделать что-то вроде этого:

Mail_Postmark::compose()
    ->addTo('jane@smith.com', 'Jane Smith')
    ->subject('Subject')
    ->messagePlain($template)
    ->send();

Взгляните на некоторые из свободно доступных классов PHP-Postmark http://developer.postmarkapp.com/developer-libs.html#php-5

2 голосов
/ 19 декабря 2011

Используйте следующий код:

// Всегда устанавливать тип содержимого при отправке электронной почты в формате HTML

$headers = "MIME-Version: 1.0" . "\r\n";
$headers .= "Content-type:text/html;charset=iso-8859-1" . "\r\n";

и вы также можете включить это // Больше заголовков

$headers .= 'From: <webmaster@example.com>' . "\r\n";
$headers .= 'Cc: myboss@example.com' . "\r\n";

и используйте

$body = file_get_contents();

и отправить письмо по почте:

mail($en['email'], $subject, $body, $headers);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...