Nette Mailer a automatické připojení obrázku z HTML
- lutor
- Člen | 27
Zdravím,
v dokumentaci se píše „Nette automaticky vyhledá a vloží všechny
soubory odkazované v HTML kódu.“ – no jenže ono mi ho to nevloží. Do
metody setHtmlBody
posílam
<p>
<img src="/images/vystavy/autor/IMG_1420.jpg" /></p>
avšak k výslednému e-mailu není nic připojeno (regulární výraz která je v Nette/Mail/Mail.php v metodě ` buildHtml()` tu cestu vůbec nenajde).
Chtěl bych se zeptat, v jakém tvaru musí být URL obrázku, aby byl
automaticky připojen, protoze když ji zadám absolutní, tak se samozřejmě
nepřipojí ale načítá z webu. A když jsem zkoušel relativní ale BEZ
úvodního lomítka (src="images/vystavy/...
), tak to pokaždé
řvalo FileNotFoundException –
File /images/vystavy/autor/IMG_1420.jpg not found
. Přitom se
přesně v takovém umístění nachází (tedy na abs. URL
http://nejakyweb.cz/images/vystavy/autor/IMG_1420.jpg
). Nebo musím
relativní cestu zadávat vzhledem k něčemu jinému (než root)?
Díky.
- Filip Procházka
- Moderator | 4668
co udělá tohle?
<img src="{$basePath}/images/vystavy/autor/IMG_1420.jpg" />
- lutor
- Člen | 27
Nakonec jsem to vyřešil tak, že jsem v Nette\Mail\Mail.php
upravil ve funkci buildHtml
regulární výraz, tak aby „žral“
úplně vše. Asi to není nejvhodnější řešení, nicméně pro mé účely
stačí (žádné speciální URL či vložené CSS s obrázky v projektu
nepoužívám). No a pak si ve zprávě generuji obrázky s url tvaru
http://mujweb.cz/neco/obrazek.jpg
a fakčí to.
//tento regular
$matches = String::matchAll($this->html, '#(src\s*=\s*|background\s*=\s*|url\()(["\'])(?![a-z]+:|[/\\#])(.+?)\\2#i', PREG_OFFSET_CAPTURE);
// upravit upravit na tento
$matches = String::matchAll($this->html, '#(src\s*=\s*|background\s*=\s*|url\()(["\'])(.+?)\\2#i', PREG_OFFSET_CAPTURE);