Неправильно отображаемые электронные письма в eM Client

У меня есть сценарий электронной почты, состоящий из нескольких частей, который берет POST-адрес электронной почты и отправляет им простые электронные письма в формате HTML и / или в виде обычного текста. Он правильно отображается в Gmail и Outlook, но не в eM (и даже не связывается с сервером связи). Код:

<?php
$email_address = addslashes($_POST['email_address']);

if (!filter_var($email_address, FILTER_VALIDATE_EMAIL)) {
header("Location: ./?error=invalid-email");
exit();
}

$subject_line = "This is a test multi-part email";

$boundary = uniqid();

$headers  = "MIME-Version:1.0\r\n";
$headers .= "From: Maggie Multipart <[email protected]>\r\n";
$headers .= "To: " . $email_address . "\r\n";
$headers .= "Content-Type: multipart/alternative;boundary=" . $boundary . "\r\n";

$message  = "This is a MIME encoded message.";
$message .= "\r\n\r\n--" . $boundary . "\r\n";

$message .= "Content-Type: text/plain;charset=utf-8\r\n\r\n";
$message .= "Hello,\nThis is a test email, the text/plain version.\n\nRegards\nMaggie Multipart";
$message .= "\r\n\r\n--" . $boundary . "\r\n";

$message .= "Content-Type: text/html;charset=utf-8\r\n\r\n";
$message .= "<p>Hello,<br>This is a test email, the text/html version.</p><p>Regards<br><strong>Maggie Multipart</strong></p>";
$message .= "\r\n\r\n--" . $boundary . "--";

mail("", $subject_line, $message, $headers);

header("Location: ./?success=email-sent");
exit();

// var_dump($_POST);
?>

Сообщение получено в eM следующим образом:

Тип содержимого: текст / обычный; кодировка = utf-8

Привет,

Это тестовое письмо, текстовая / обычная версия.

С уважением

Мэгги Мультипарт

Однако eM настроен на получение электронных писем в формате HTML (и делает это часто). Может кто-нибудь помочь мне решить эту проблему? Я пропускаю какие-либо заголовки?

0

Решение

Мой общий совет по созданию электронных писем: не делайте этого сами (в любом случае, с некоторыми строковыми функциями / операторами concat). Мое оружие выбора SwiftMailer но в сети есть и другие возможные библиотеки.

<?php
require_once('autoload.php'); // swiftmailer was installed via Composer

$message = Swift_Message::newInstance('This is a test multi-part email')
->setBody(
"Hello,\nThis is a test email, the text/plain version.\n\nRegards\nMaggie Multipart",
'text/plain',
'utf-8'
)
->addPart(
"<p>Hello,<br>This is a test email, the text/html version.</p><p>Regards<br><strong>Maggie Multipart</strong></p>",
'text/html',
'utf-8'
)
->setFrom(array('...@...' => '...'))
->setTo(array('...@...' => '...'));

$transport = Swift_SmtpTransport::newInstance('MSERV', 25, 'tls')
->setUsername('...')
->setPassword('...');

$mailer = Swift_Mailer::newInstance($transport);
$result = $mailer->send($message);
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]