У меня есть следующий заголовок электронной почты:
$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;