2012-05-26 3 views
4

У меня есть некоторые основные HTML и некоторые CSS, но по какой-то причине Gmail помещает 3D infornt в 'текст/CSS'Отправка HTML и CSS письма в GMAIL с Swift Mailer

Код образца

$message = " 
      <style type='text/css'> 
       #main {border:1px solid red;} 
      </style> 

       <div id='main'>some text</div> 
"; 

Но когда я просмотреть исходный посыл на Gmail

<style type=3D'text/css'> 

и, может быть, вот почему почта не стиль. Я использую Swift Mailer

// также в HTML

<div id=3D'main'> 

// скор мэйлером

$type = $message->getHeaders()->get('Content-Type'); 
    $type->setValue('text/html'); 
    $type->setParameter('charset', 'utf-8'); 
+0

http://en.wikipedia.org/wiki/Quoted-printable#Quoted-printable_encoding <- Это выглядит полезным – jimw

ответ

1

Из того, что я знаю, GMAIL тег поддержки оленьей кожи стиля в голове или в теле. Я использую атрибуты стиля для элементов при отправке электронной почты.

+0

Да я добавить атрибуты стиля и это сработало ^^ спасибо – grape1

1

Swift Mailer пытается убежать от «до». Вы должны использовать setEncoder() перед setBody():

$message->setEncoder(Swift_Encoding::get8BitEncoding()); 
$message->setBody($body, "text/html"); 
+1

, это правильное решение. Спасибо @Fox – Cassiano

+0

Это решение не работает для меня. Я добавил '$ message-> setEncoder (Swift_Encoding :: get8BitEncoding());' и когда я 'print_r' сообщение после отправки с моего сервера, часть HTML отображается как« Content-Transfer-Encoding: 8bit' и равные знаки появляются по желанию (т. е. просто =). Однако при получении этого сообщения часть HTML была изменена на «Content-Transfer-Encoding: quoted-printable», а знаки равенства отображаются как '= 3D'. Использование Swiftmail версии Swift-5.4.3. Пробовал несколько принимающих хостов и несколько почтовых клиентов, все с одинаковым результатом. – Jon

+0

Как уже упоминалось, '$ message-> setEncoder (Swift_Encoding :: get8BitEncoding()); модификация не устраняет проблему для меня. Однако, '$ message-> setEncoder (Swift_Encoding :: getBase64Encoding());' кодирует часть HTML как 'base64', и это происходит через нетронутый на другом конце. Это было особенно важно для меня, так как HTML теперь не только правильно обрабатывается, но также подписываю мои сообщения с помощью сигнатуры 'S/MIME', и полученное измененное сообщение заставляет подпись быть недействительной. Теперь подпись остается действительной, поскольку сообщение не изменено на принимающей стороне. – Jon

Смежные вопросы