Poslání embedované fotky v HTML emailu

MyEgo.cz

home foto blogy mywindows.cz kontakt

Poslání embedované fotky v HTML emailu

PHP 02.05.10

Pokud posíláte email s obrázky klientům, máte v zásadě tři možnosti:

  1. odkázat se v HTML na váš externí server, čímž sice zmenšíte velikost emailu, ale email aplikace externí obrázky většinou blokují (takže se stránka zobrazí neúplná)
  2. dát obrázek jako přílohu emailu, jenže to také vyžaduje aktivitu klienta (kliknutí na obrázek)
  3. embedovat obrázky přímo do HTML

Ta poslední metoda je často ideální, protože typická emailová aplikace takovýto obrázek zobrazí bez jakékoliv požadované aktivity na straně příjemce.

Pro snadnou tvorbu takovéhoto emailu je možné použít třeba knihovnu phpMailer:

require("class.phpmailer.php");
$mail = new PHPMailer();
$mail->IsMail();
$mail->From="vas email";
$mail->FromName="vase jmeno";
$mail->AddAddress("prijemce email");
$mail->Subject = "Subjekt emailu";
$mail->IsHTML(true);
$mail->AddEmbeddedImage( '/dir/soubor.jpg', // lokalni soubor 'logoimg', // ID shodné s HTML 'fotografie.jpg', // zobrazený název souboru 'base64', 'image/jpeg'); // MIME typ
$mail->Body = "<p><img src=\"cid:logoimg\" /></p>";
$mail->AltBody="Fotografie";
$mail->Send();

Základem je uvedení anchoru v HTML pro daný obrázek, zde cid:logoimg, na který se poté odkážete v metodě AddEmbeddedImage(). Důležité je také správné uvedení MIME Type (pátý parametr) a volitelné jméno souboru (třetí parametr).


Komentáře

  1. 1 J.R. Fish 29.07.10, 01:07:28
    FB

    tohle je zbytečně komplikované (zjišťování mime typu atd).

    phpmailer totiž vytváří embedované fotky z příloh automaticky. jediné co je třeba dodržet aby to fungovalo je, aby src obrázku v html zprávě bylo shodné s cestou k příloze:

    $mail = new PHPMailer();
    $mail->MsgHTML( 'teď přijde obrázek - <img src="images/logo.png" alt="obrazek" />' );
    $mail->AddAttachment( 'images/logo.png' );

    pokud je cesta v AddAttachment !naprosto! stejná, jako cesta v src obrázku, tak phpmailer sám obrázek embedne, a já se nemusím vůbec starat o to, jestli je mime typ png, jpeg, gif atd, ani vytvářet unikátní cid

  2. 2 J.R. Fish 29.07.10, 01:07:37
    FB

    OPRAVA: tak dokonce cesta nemusí být přesně shodná, ale stačí, aby ta v src byla částí té z AddAttachment (jinými slovy, musí platit strpos( $cesta_k_attachmentu , $src_v_img ) !== false)

  3. 3 Martin Prusenovský 26.01.12, 12:01:35
    FB

    [1] tohle mi jede, díky... ale chtěl bych se zeptat, jde timto zpusobem zaroven vlozit i k obrazku nejaky text??