Intereting Posts
MAMP: переменные среды, которые удаляются / заменяются между envvars и runtime Как я могу заставить этот скрипт работать в WordPress? как обеспечить ссылку для загрузки уже заархивированных файлов в php Laravel eloquent UUID в сводной таблице Перенести все новые электронные письма в базу данных Измерьте размер строки в байтах в php Перемещение нескольких объектов по ссылкам без повторения зачем мне заканчивать ob_start ()? Запуск PHP: невозможно загрузить динамическую библиотеку XMLHttpRequest не будет работать в IE 7/8, но работает в других браузерах Вызов неопределенной функции mcrypt_decrypt () – даже если установлен php5-mcrypt Не удалось найти порядковый номер 372 в файле openscript.exe из WAMP / Apache. Как создать уникальные идентификаторы, например YouTube? Что означает оператор. = В PHP? Моя доктрина действительно медленная. Простой запрос и одна секунда, чтобы получить результат

Отправка электронной почты с открытым текстом php и html

У меня есть следующий заголовок электронной почты:

$random_hash = md5(date('r', time())); $headers = array ('From' => $from, 'To' => $to, 'Return-Path' => 'info@example.com', 'Subject' => $subject, 'Content-Type'=>'multipart/alternative'); 

Я хочу отправить две версии электронной почты в одном письме. Один текст и один html.

Поэтому я сделал это:

 ob_start(); ?> --PHP-alt-<?php echo $random_hash; ?> Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit Copy and paste: http://example.com/app_dl.php?app_id=<?php echo $_GET[app_id]; ?> to download your $app_name app \r\n Want to get tons more hot apps for free! anywhere anytime? Download our app on http://example.com \r\n example.com team; --PHP-alt-<?php echo $random_hash; ?> Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: 7bit <p><a href='http://example.com/app_dl.php?app_id=<?php echo $_GET[app_id]; ?>'>Click Here</a> to download your <?php echo $app_name_app; ?></p> <p>Want to get tons more hot apps for free! anywhere anytime? Download our app on <a href='http://example.com'>example.com</a></p> <br/> <p>example.com team</p>"; <?php $bodyHTML =ob_get_clean(); 

Но, похоже, он не работает хорошо … и мне интересно, почему!?!?

Чтобы создать multipart/alternative сообщение, вам нужно указать boundary и разделить каждую часть по этой границе. Хорошей граничной строкой будет то, что очень маловероятно в самой части сообщения, например, случайная строка, генерируемая sha1(uniqid()) . Например:

 MIME-Version: 1.0 Content-Type: multipart/alternative; boundary=c4d5d00c4725d9ed0b3c8b --c4d5d00c4725d9ed0b3c8b Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit part1 --c4d5d00c4725d9ed0b3c8b Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: 7bit <b>part2</b> --c4d5d00c4725d9ed0b3c8b-- 

Это указано в RFC 2046, раздел 5.1.4 .

Я считаю, что использование PHP_EOL вместо \ r \ n также работает. Например:

 $headers = "Content-type: text/html; charset=UTF8" . PHP_EOL;