2015-02-15 2 views
0

Я пытаюсь создать html-письмо с Swiftmailer и встроить изображение в бит html. Если я просто отправлю почту с открытым текстом и с html-версиями, версия html появится просто отлично, со сломанным изображением (конечно). Однако, если я внедряю изображение, я вижу только текстовую версию, и как html-версия, так и изображение отображаются как вложения.Вложение изображения с помощью swiftmailer делает gmail show html в качестве вложения

Неправильно ли что-либо или придерживаться такого подхода?

Заголовки:

Message-ID: <[email protected]> 
Date: Sun, 15 Feb 2015 16:04:55 +0100 
Subject: Subject here 
From: Fastaval <[email protected]> 
To: [email protected] 
MIME-Version: 1.0 
Content-Type: multipart/related; 
boundary="_=_swift_v4_1424012695_eef1c60fde0ddd3f8a9ad82190b115f8_=_" 

Обычный текст заголовка:

--_=_swift_v4_1424012695_eef1c60fde0ddd3f8a9ad82190b115f8_=_ 
Content-Type: text/plain; charset=utf-8 
Content-Transfer-Encoding: quoted-printable 

Html Заголовок:

--_=_swift_v4_1424012695_eef1c60fde0ddd3f8a9ad82190b115f8_=_ 
Content-Type: text/html; charset=utf-8 
Content-Transfer-Encoding: quoted-printable 

Встроенный заголовок изображения:

--_=_swift_v4_1424012695_eef1c60fde0ddd3f8a9ad82190b115f8_=_ 
Content-Type: image/jpeg; name=Banner15.jpg 
Content-Transfer-Encoding: base64 
Content-Disposition: inline; filename=Banner15.jpg 
Content-ID: <[email protected]> 

HTML-бит с изображением:

<div><img alt=3D"banner" src=3D"cid:8e75618e41588e7e5= 
b6953f0c319e2[email protected]"/></div> 

Я генерируя письмо так:

$this->_message = Swift_Message::newInstance() 
    ->setFrom($from) 
    ->setTo($to) 
    ->setSubject($subject) 
    ->setBody($message, 'text/plain'); 

$html = '<div><img alt="banner" src="banner-src"/></div>'; 
$html = str_replace('banner-src', $this->_message->embed(Swift_Image::fromPath('Banner15.jpg')), $html); 

$this->_message->addPart($html, 'text/html'); 
+0

Вы когда-нибудь это выясняли? –

+0

К сожалению нет - я пошел с просто ссылкой на онлайн-версии файлов вместо – Fake51

ответ

1

У меня была такая же проблема, и в конечном итоге делает это:

оставить вне text/plain body, а часть text/html отображается просто отлично.

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