Nette Mailer a automatické připojení obrázku z HTML

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
lutor
Člen | 27
+
0
-

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
+
0
-

co udělá tohle?

<img src="{$basePath}/images/vystavy/autor/IMG_1420.jpg" />
despiq
Člen | 320
+
0
-

ja osobne si nastavuju jeste cesty
$texy->imageModule->fileRoot
$texy->imageModule->root

Coura
Člen | 18
+
0
-

Mám úplně stejný problém… Využívám fckeditor pro newslettery kde třeba {$basePath} použít nemůžu…

to lutor: našel si nějaké řešení?

Editoval Coura (9. 10. 2010 20:56)

lutor
Člen | 27
+
0
-

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);