Autor Zpráva
quatzael
Profil
Ahoj, řeším problém s odesláním emailu s obrázky.
Když ho do těla zprávy vložím klasicky v elementu <img>, tak se mi sice zobrazí, ale až po odsouhlasení, že chci obrázky zobrazit:
Zpráva obsahuje externí obrázky, kliknutím na tento odkaz je zobrazíte. (seznam.cz)

Když ho zakomponuju přímo jako background image do nějakýho divu nebo table cell tak se vůbec nic nezobrazí..

Narazil jsem na stránku, která nabízí "zaručené" řešení, ale to taky nefunguje: backgrounds.cm

Když mi dorazí nějaký email z facebooku nebo odjinud, tak se tam vyskytuje logo a nejaká další grafika a bez nějakýho potvrzování se to rovnou zobrazí, ale tady mi to nějak nefunguje..
Keeehi
Profil
quatzael:
A to je takový problém si zobrazit zdrojový kód emailu, v kterém to funguje a podívat se, jak to řeší?
quatzael
Profil
Keeehi:
Zdrojak emailu opravdu nevím jak zobrazit.. Ale můžu se podívat do vývojářských nástrojů, to je pravda..

Sorry, v noci mi to už nějak nemyslelo..
quatzael
Profil
Keeehi:
Tak jsem to vyzkoušel, ale nefunguje to.
Zkoušel jsem jsem celej ten obsah co je zobrazený ve vývojářských nástrojích překopírovat a poslat sám, ale zase se tam zobrazí: Zpráva obsahuje externí obrázky, kliknutím na tento odkaz je zobrazíte. A po zobrazení se ty jejich obrázky ani nenačtou..


Oni tam posílají obrázky nějak takto:

 <img alt="Facebook" data-src="http://domena.cz/externalfiles/FB-32x32-icon.png" src="https://img.email.seznam.cz/image-proxy?hashId=5c2ded72e4&amp;addr=http%3A%2F%2Fdomena.cz%2Fexternalfiles%2FFB-32x32-icon.png&amp;sznId=610ac9-ef61-4bf8-a242-58d52aa">
                            



Vypadá to, že posílají obrázek nějak ve formátu base64 a seznam to automaticky z konvertuje do png.
juriad
Profil
quatzael:
Nedívej se do vývojářských nástrojů, ale do originálu e-mailu: www.savana.cz/napoveda/emaily-a-emailova-komunikace/emaily-a-emailova-komunikace/ziskani-zdrojoveho-kodu-e-mailove-zpravy
quatzael
Profil
juriad:
Právěže mám seznam a ta možnost "Zobrazit hlavičku" zobrazí pouze hlavičku a ne celou zprávu..


juriad:
Přeposlal jsem si to na gmail.
Kromě toho, že ta zpráva na začítku obsahuje plno takovýchto nesmyslných znaků:
 =20
 =20
 =20
 =20
  =09=20
 =20
  =09=20
 =20
 =20
 =20

tak je tam potom zase část kde je čisté HTML:
A zase tam je <img> jednoduše:

<img data-src=3D"http://www.domena.cz//static/img/mailing/logo-3.png" src=3D"http://www.domena.cz//static/img/mailing/logo-3.png" alt=3D"Domena" border=3D"0">

Tohle je teď zase ukázka z jinýho mailu, ale funguje stejně.


Už jsem trošku blíž asi.. V hlavičce tam je všude Content-Type: multipart/alternative;

PHPMailer to asi umí nějak sám nastavovat pomocí: $mail->AddEmbeddedImage(), ale ještě jsem nezjistil jak..
Davex
Profil
quatzael:
Právěže mám seznam a ta možnost "Zobrazit hlavičku" zobrazí pouze hlavičku a ne celou zprávu..
Jak uložit celou zprávu.

PHPMailer to asi umí nějak sám nastavovat pomocí: $mail->AddEmbeddedImage(), ale ještě jsem nezjistil jak..
Metoda msgHTML() vloží HTML zprávu a obrázky připojí automaticky, pokud se k nim dostane. Stejně tak metoda setHtmlBody() třídy Nette\Mail.

hlavičce tam je všude Content-Type: multipart/alternative;
Ne, dělá se to přes Content-Type: multipart/related; ... s propojením přes Content-ID. Pokud se v tom chceš vrtat do větší hloubky, tak je tomu věnováno RFC 2392.
quatzael
Profil
Davex:

No, nefunguje mi to. Zkouším to takhle a obrázek se vůbec nevloží:

$email = new PHPMailer();
$email->CharSet = "UTF-8";      
$email->From      = 'info@domena.cz';
$email->FromName  = 'Domena.cz';
$email->Subject   = 'IMAGE TEST';
$email->AddEmbeddedImage('http://www.domena.cz/png/logo.png', "logo_png", "logo.png");
$email->MsgHTML = '<table><tr><td colspan="2">
<img src="cid:logo_png" alt="image_test" width="310" height="76" border="0" />
</td></tr></table>';
$email->Body = '<div>IMAGE TEST</div>'; 
$email->IsHTML(true);
$email->AddAddress('notification@domena.cz');
return $email->Send();



quatzael:
Když tam nedám to $email->Body tak mi to hází chybu, že body je empty.. Nevím jak to tam má vypadat ohledně toho ->MsgHTML a ->Body, co kam dát..
Davex
Profil
quatzael:
$email->AddEmbeddedImage('http://www.domena.cz/png/logo.png', "logo_png", "logo.png");
V prvním parametru má být cesta k lokálně dosažitelnému souboru s obrázkem a nikoliv URL obrázku.

$email->MsgHTML = '<table><tr><td colspan="2"><img src="cid:logo_png" alt="image_test" width="310" height="76" border="0" /></td></tr></table>';
msgHTML je metoda a nikoliv vlastnost, takže se použije jako funkce a ne jako proměnná.
quatzael
Profil
Davex:

upravil jsem to takhle, ale stejně to nefunguje:

$email = new PHPMailer();
$email->CharSet = "UTF-8";      
$email->From      = 'info@domena.cz';
$email->FromName  = 'Domena.cz';
$email->Subject   = 'IMAGE TEST';
$email->AddEmbeddedImage('logo.png', "logo_png", "logo.png");
$email->MsgHTML ('<table><tr><td colspan="2">
<img src="cid:logo_png" alt="image_test" width="310" height="76" border="0" />
</td></tr></table>');
$email->IsHTML(true);
$email->AddAddress('notification@domena.cz');
return $email->Send();



Tu celou cestu k obrázku jsem tam měl proto, aby to bylo přesně zadaný, pro jistotu.
Teď jsem obrázek nahrál přímo do složky kde mám tenhle script, jestli to je tak správně..
quatzael
Profil
Tak konečně vyřešeno!!

Nevím sice úplně jak. Asi jsem tam měl špatnou cestu k souboru. Nebere to relativní cestu, ale musím před to vždycky dát $_SERVER['DOCUMENT_ROOT']..

A to $email->MsgHTML() je tam asi k ničemu, funguje to i bez toho jenom s $email->Body..

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: