Posílání emailu s obrázkem
- wise
- Člen | 161
Zdravím,
mám maličký problém s emailem. Jde mi konkrétně o obrázky.
Kód:
<?php
$mail = new Mail;
$mail->setFrom('From....');
$mail->addTo($email);
$mail->setSubject("Potvrzení objednávky");
$template = new FileTemplate;
//$template = $presenter->createTemplate();
$template->setFile(APP_DIR . '/templates/email.phtml');
$template->basePath = $presenter->template->basePath;
$mail->addEmbeddedFile(WWW_DIR . '/images/logo.png');
$mail->setHtmlBody($template);
$mail->send();
?>
Email.phtml
<?php
<!DOCTYPE html>
<html lang="cs">
<head>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
<title>Title</title>
</head>
<body>
<img src="http://absolutniOdkazNaObrazek.png">
email
</body>
</html>
?>
V emailu mám přiložen obrázek logo.png, ale jak na něj mám odkázat
v šabloně email.phtml? Když zadávám pouze logo.png, vyskočí chyba, že
nenašel soubor. Funguje to, když zadám absolutní adresu k obrázku, ale
potom mi je přiložený obrázek k ničemu.
Ještě v dokumentaci se píše, že si vyhledá soubory a přidá. V emailu
v patičce nemám žádné přidané obrázky.
Jak tedy nejlépe dostat obrázek do emailu?
A ještě taková otázka mimo, četl jsem všemožné informace o tom, jak zapsat v emailu pozadí. Co radíte vy?
- Matúš Matula
- Člen | 257
Ked som to pouzival ja (asi rok dozadu), tak to fungovalo, ako pises..t.z. ze som v sablone odkazal na obrazok
<img src="{$basePath}/images/obrazok.png">
a Nette si ho automaticky prilozilo, cize nebolo treba volat ani
<?php
$mail->addEmbeddedFile(WWW_DIR . '/images/obrazok.png');
?>
Co sa tyka pozadia, tak som pouzival klasicky zapis pre web,
<div>
s bg pomocou css. Do pozadia som ale nikdy nedaval
nieco naozaj podstatne [nosnu informaciu] emailu.
- wise
- Člen | 161
Takže jsem trochu kod upravil, musel jsem zaregistroval filtr
<?php
$mail->setFrom('From....');
$mail->addTo($email);
$mail->setSubject("Potvrzení objednávky");
$template = new FileTemplate;
//$template = $presenter->createTemplate();
$template->setFile(APP_DIR . '/templates/email.phtml');
$template->registerFilter(new LatteFilter);
$template->basePath = $presenter->template->basePath;
$mail->addEmbeddedFile(WWW_DIR . '/images/logo.png');
$mail->setHtmlBody($template);
$mail->send();
?>
už to chybu neháže,
v šabloně mám:
<?php
<img src="{$basePath}/images/logo.png">
?>
ale problém je, že mi přijde email bez obrázku a jako src má: http://images/logo.png.
Nevíte kde je problém?
- Matúš Matula
- Člen | 257
Tak som to prave skusil, lebo uz som si to nepamatal. Nie je nutne nakoniec
pouzivat {$basePath}, ide len o to, aby bola cesta k obrazku spravna a Nette
si ho naozaj samo prilozi ako inline prilohu
Testoval som nasledovne:
<?php
require LIBS_DIR . '/Nette/loader.php';
$email_template = new Template();
$email_template->setFile(dirname(__FILE__) . '/index.html');
$mail = new Mail;
$mail->setFrom('info@localhost.sk');
$mail->addTo('ciki@localhost.sk');
$mail->setSubject('test');
$mail->setHtmlBody($email_template);
$mail->send();
echo 'done!';
?>
a v sablone iba
..head sekcia
<body>
<img class="header-img" src="img/header.jpg" alt="DBBS" />
</body>
</html>