mail images toevoegen

9-08-2010 12:28

mail images toevoegen

  • AB_ Jeroen
  • AB_ Jeroen's foto

Hallo allemaal,

Ik wil graag on the fly afbeeldingen uit een string vervangen, zodat ze in een email verzonden kunnen worden. Het verzenden van e-mails is geen probleem, ik heb wel moeite met het koppelen van afbeeldingen in zo'n email.

1
2
3
4
5
6
7
8
<?php
// define attachment
$local_header = 'img/foto1.jpg';
$mail->Attach(file_get_contents($local_header), FUNC::mime_type($local_header), null, null, null, 'inline', $img_header);

// set text/html version of message
$mail->Html('<h1>Welkom</h1>Bekijk onze foto: <img src="cid:'.$img_header.'">');
?>

Dit werkt uitstekend. Hier worden de images ook opgepakt en in het email bericht verstuurd. Echter wil ik dit wat meer automatiseren, en images uit een string halen en ze 'verwerken', zodat ze in de email terrecht komen.

Bijvoorbeeld:

1
2
3
4
5
6
7
8
9
10
11
12
<?php
$content = '<h1>Welkom</h1>Bekijk onze foto: <img src="img/foto1.jpg" alt="" /> en ook de tweede <img src="img/foto2.jpg" alt="" />';
// nu dus: 
// 1 alle <img src=""> ophalen
// 2 mail->attach uitvoeren per image
// 3 variabele $content wijzigen, zodat <img src=""> vervangen wordt door de juiste src="cid:....

Iemand enig idee hoe ik dit automatisch per <img> uit een string kan vervangen en verwerken als inline attachement?

Groet,
Jeroen
?>
9-08-2010 13:08

Re: mail images toevoegen

  • AB_ Jeroen
  • AB_ Jeroen's foto

Ik heb het voor elkaar :)

1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
$html = '<h1>hoi</h1> <img src="img/henk.jpg" alt="" /> en twee is <img src="img/henk2.jpg" alt="" />';
$doc=new DOMDocument();
$doc->loadHTML($html);
$xml=simplexml_import_dom($doc); // just to make xpath more simple
$images=$xml->xpath('//img');
foreach ($images as $local_img) {
    $test = (string) $local_img['src'];
    $mail_image = MIME::unique(); // get ID value (random) for the embed image
    $mail->Attach(file_get_contents($test), FUNC::mime_type($test), null, null, null, 'inline', $mail_image);
    $html = str_replace($local_img['src'], 'cid:'.$mail_image, $html);
}
?>

?>

Inloggen wachtwoord vergeten? Aanmelden
ADSL – Telfort Internet – Ziggo Alles in 1