Я застрял в проблеме с использованием фреймворка 1С-Битрикс с PHPMailer. Проблема связана с телом электронной почты.
Каркас 1С-Битрикс готовит тело в зависимости от включенных опций. Например, если я включу опцию «Создать текстовую версию html-письма», тело будет выглядеть так:
---------alt8045b59706
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
This is my email
---------alt8045b59706
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: 8bit
<h1> This is my email </h1>
---------alt8045b59706--
Если к шаблону электронной почты будет прикреплен текстовый файл, тело будет выглядеть так:
---------mix4215b5973f
Content-Type: multipart/alternative; boundary="-------alt3795b5973f"
---------alt3795b5973f
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
This is my email
---------alt3795b5973f
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: 8bit
<h1> This is my email </h1>
---------alt3795b5973f--
---------mix4215b5973f
Content-Type: text/plain; name="=?UTF-8?B?dGVzdC50eHQ=?="Content-Transfer-Encoding: base64
Content-ID: <427605>
dGVzdCB0ZXh0Cg==
---------mix4215b5973f--
И, наконец, стандартное тело письма будет выглядеть так:
<h1> This is my email </h1>
Я не могу просто передать такое тело письма в PHPMailer. Это не работает правильно. Я пробовал msgHtml () — тоже не работает.
Но стандартный php mail () func хорошо работает с таким телом электронной почты.
Я обнаружил, что в PHPMailer мне нужно установить Body и AltBody отдельно. Но тогда, что является лучшим способом для меня, чтобы разобрать такое тело электронной почты.
Может кто-нибудь знает инструмент для этого?
Или PHPMailer имеет встроенные методы для этого?
Может быть, мне нужно просто вручную установить правильный заголовок «Content-Type» (фреймворк сообщает мне правильный Content-Type)
Заранее спасибо.
Вам не нужно думать об этих вещах — PHPMailer сделает это за вас. Это все, что вам нужно сделать, чтобы создать эту структуру:
$mail->isHTML();
$mail->Body = '<h1> This is my email </h1>';
$mail->AltBody = 'This is my email';
$mail->addAttachment('path/to/file.pdf');
Кроме того, структура MIME в примере, который вы дали для тела сообщения с вложением, неверна, поэтому я не ожидаю, что она будет работать в любом контексте.
Других решений пока нет …