проблема заголовка mail () для электронной почты в формате html - PullRequest
1 голос
/ 12 мая 2009

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

Вот код:

if( isset($_POST['submit']) )
{
    $browser = $_SERVER['HTTP_USER_AGENT'];
    $page = $_POST['page'];
    $email = $_POST['email'];
    $error = $_POST['error'];

    $message  =  "<html><body> \n";   
    $message .=  "Email: $email \n";
    $message .=  "Page: $page \n";
    $message .=  "OS/ Browser: $browser \n";
    $message .=  "Error: $error \n";
    $message .=  "</body></html> \n";

    $headers  = 'MIME-Version: 1.0' . '\r\n';
    $headers .= 'Content-type: text/html; charset="iso-8859-1"' . '\r\n';
    $headers .= 'From:  <code@website.com>' . '\r\n';
    $headers .= 'Reply-To: $email ' . '\r\n';
    $headers .= 'X-Priority: 1' . '\r\n';

    $subject  = "[ERROR REPORT] Page: " . $page;

    mail("myEmail@gmail.com", $subject, $message, $headers );

    $mesg = "Thank you for your report!";

}

?>

Ответы [ 3 ]

2 голосов
/ 13 мая 2009

Лично я фанат Pear Mail (http://pear.php.net/package/Mail) и Pear Mail_Mime (http://pear.php.net/package/Mail_Mime).

)

Отправка электронного письма в формате HTML (с текстовым телом, для клиентов, не поддерживающих HTML) так же проста:

include_once('Mail.php');
include_once('Mail/Mime.php');

$htmlBody = '<html><body><b>Hello World</b></body></html>';
$plainBody = 'Your client doesn\'t support HTML';
$em = Mail::factory('sendmail');
$headers = array('From'=>'me@domain.com', 'To'=>'joe@schmoe.com', 'Subject'=>'Cool Email');
$mime = new Mail_Mime();
$mime->setTxtBody($plainBody);
$mime->setHtmlBody($htmlBody);
$message = $mime->get();
$headers = $mime->headers($headers);
$mail = $em->send('joe@schmoe.com', $headers, $message);
2 голосов
/ 16 декабря 2010

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

Использование: "\r\n"

Вместо: '\r\n'

1 голос
/ 12 мая 2009

В основном повторяю то, что я ответил на другой вопрос , я в большинстве случаев всецело зацикливаюсь на себе, но когда дело доходит до почты, я от всей души рекомендую облегчить себе и использовать что-то вроде Swift Mailer или PHPMailer (в таком порядке, за мои деньги).

В качестве дополнительного бонуса (и при условии, что вы указываете ответ и т. Д.), У вас также гораздо меньше шансов быть помеченным как спам.

РЕДАКТИРОВАТЬ: Может быть, это просто пример, который вы использовали, но в вашем сообщении нет фактического HTML. Почему бы просто не использовать простой текст? И да, я бы использовал один из классов, которые я предлагаю, для простого текста.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...