Mail\Message setHtmlBody vložení obrázků inline
- lubos
- Člen | 22
Ahoj,
jak je vymyšleno vkládání obrázků při sestavování html emailů
z šablon, nějak nerozumím, proč se nevloží inline obrázky které mají
uvedenu cestu, vkládají se pouze ty které ji nemají. Zkouším udělat
jednoduchý mailovací systém, kde jsou předpřipravené šablony a do nich se
potom vloží obsah vytvořený v nějakém tom editoru pro „blbé“.
U toho jsem zjistil že při použití $mail->setHtmlBody() s druhým
parametrem cesty, se vloží pouze obrázky, které cestu uvedenou nemají.
Viníkem je regulární výraz v Nette\Mail v metodě setHtmlBody, ale proč ?
$html = '<img src="image.jpg">';
$html .= '<img src="/image.jpg">';
$html .= '<img src="http://moon.lan/image.jpg">';
$matches = Strings::matchAll(
$html,
'#
(<img[^<>]*\s src\s*=\s*
|<body[^<>]*\s background\s*=\s*
|<[^<>]+\s style\s*=\s* ["\'][^"\'>]+[:\s] url\(
|<style[^>]*>[^<]+ [:\s] url\()
(["\']?)(?![a-z]+:|[/\#])([^"\'>)\s]+)
|\[\[ ([\w()+./@~-]+) \]\]
#ix',
PREG_OFFSET_CAPTURE
);
Debugger::barDump($matches);