Мои HTML-письма не форматируются как HTML?

#php #html #email #header

#php #HTML #Адрес электронной почты #заголовок

Вопрос:

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

Спасибо

Хорошо, я просмотрел несколько учебных пособий в Интернете
http://www.webhostingtalk.com/showthread.php?t=416467
http://css-tricks.com/2866-sending-nice-html-email-with-php
http://www.w3schools.com/php/func_mail_mail.asp

 <?php
session_start();
if (isset($_SESSION['new_count'])) //counts how many fake emails i send myself
{
    $count = $_SESSION['new_count'];
}
else
{
    //first time
    $count = 0;
}

$to = 'myemail@gmail.com';
$subject = 'email test';
$message = '<html><head></head><body>';
$message .= '<h1>this is an email test</h1>';
$message .= '<br />does new line work?<br />';
$message .= 'how about <b>bold</b> and <strong>strong</strong>?<br />';
$message .= '</body></html>';
//updated my header to include mime-version
$mailheader = 'MIME-Version: 1.0' . 'rn';
$mailheader .= 'Content-type: text/html; charset=ISO-8859-1' . 'rn';
$mailheader .= 'from: abc@def.com <btyazaki@gmail.com>' . 'rn';

$yay = mail($to,$subject,$message,$mailheader);

if($yay)
{
    echo 'woot';
    $count  ;
    $_SESSION['new_count'] = $count;
    echo '<br>Emails Sent: '.$count;
}
else
{
    echo 'no woot';
}
?>
  

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

Комментарии:

1. Это не способ отправки электронной почты в формате HTML. Обратитесь к поиску Stack Overflow или Google, чтобы узнать, как это делается

2. Пекка, спасибо за информацию. Я сделал поиск в Google и изучил некоторые из предложенных тем Stack Overflow, прежде чем задавать свой вопрос. Большая часть того, что я обнаружил, заключалась в том, что это были проблемы с объявлением заголовка, но мой заголовок выглядит так, как и должно быть в соответствии с учебными пособиями, которые я опубликовал, любопытно, что портит электронное письмо.

3. Для начала вы не используете <html> теги , <head> , и <body> . Почтовые клиенты придирчивы.

4. о, мой обновленный скрипт имеет теги <html> <head> и <body> …

5. Если вы хотите использовать escape-символы, такие как rn then, вы должны использовать строки в PHP, заключенные в двойные кавычки.

Ответ №1:

Попробуйте использовать двойные кавычки для вашего rn .

 $mailheader = 'MIME-Version: 1.0' . "rn";
$mailheader .= 'Content-type: text/html; charset=ISO-8859-1' . "rn";
$mailheader .= 'from: abc@def.com <btyazaki@gmail.com>' . "rn";
  

Комментарии:

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

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

3. Да, любые escape-символы должны быть заключены в двойные кавычки.

Ответ №2:

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

Пример с Swift:

 require_once 'lib/swift_required.php';

//Create the message
$message = Swift_Message::newInstance()

  //Give the message a subject
  ->setSubject('Your subject')

  //Set the From address with an associative array
  ->setFrom(array('john@doe.com' => 'John Doe'))

  //Set the To addresses with an associative array
  ->setTo(array('receiver@domain.org', 'other@domain.org' => 'A name'))

  //Give it a body
  ->setBody('Here is the message itself')

  //And optionally an alternative body
  ->addPart('<q>Here is the message itself</q>', 'text/html')

  //Optionally add any attachments
  ->attach(Swift_Attachment::fromPath('my-document.pdf'))
  ;
  

Комментарии:

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

2. @Brodie: Жаль это слышать, вот кое-что, чтобы подбодрить вас 🙂

Ответ №3:

Насколько я вижу, «From» должно быть перед «Content-type». Кроме того, вам не нужен заголовок «MIME».