2009-07-21 6 views
1

Je veux envoyer une Newsletter avec PHPMAiler. Le bulletin fonctionne, mais je me demande s'il y a une meilleure option pour le faire.Quelle est la bonne façon d'intégrer des images PHPMailer avec un e-mail HTML?

Ce que j'ai est.

  1. page HTML
  2. Images

Maintenant, mon code se présente comme suit

$mail = new PHPMailer(); 

//Adding the body 
$body = file_get_contents('template/index.htm'); 

$mail->Subject = "PHPMailer Test Subject via mail(), basic"; 

$mail->AltBody = "To view this message, please use an HTML compatible email viewer!"; 


$mail->SetFrom('xxxxxxx', 'xxxxxxxxxx'); 

$address = "[email protected]"; 
$mail->AddAddress($address, "xxxxxxx"); 

$mail->AddEmbeddedImage("template/images/bullet_point.gif","1"); 
$mail->AddEmbeddedImage("template/images/template_1_01.gif","2"); 
$mail->AddEmbeddedImage("template/images/template_1_03.gif","3"); 


$mail->MsgHTML($body); 

if(!$mail->Send()) { 
    echo "Mailer Error: " . $mail->ErrorInfo; 
} else { 
    echo "Message sent!"; 
} 

J'utilise file_get_contents pour obtenir la page html et AddEmbeddedImage d'insérer des images, est maintenant là une manière de passer seulement la page HTML à PHPMailer et que PHP Mailer incorporera ces images automatiquement?

+0

Vous pouvez simplement charger des images de source externe, si cela correspond à vos besoins. Les mails seraient plus petits à envoyer et à recevoir. – usoban

+0

Cela ne fonctionnera pas dans ma situation, puisque les images pourraient être déplacées à n'importe quel stade – Roland

Répondre

1

Je ne pense pas que ce que vous essayez de faire est possible (en ajoutant automatiquement les images requises) avec PHPMailer "à partir de zéro".

Peut-être pourriez-vous analyser le code HTML pour obtenir la liste des images auxquelles il est lié? Il y a au moins 2 façons de faire cela:

  • en utilisant rexexes; généralement pas la meilleure façon de faire les choses si vous essayez d'extraire des données à partir de HTML - et vous êtes ^^
  • une autre (probablement) meilleure façon d'utiliser DOMDocument::loadHTML sur le contenu HTML chargé à partir de votre fichier (la sortie de ? file_get_contents), et le travail avec les méthodes de DOMDocument (et, pourquoi pas, DOMXPath)

Pour obtenir les images, je suppose que vous avez <img> balises dans votre e-mail, avec src attributs; le but est de trouver les valeurs de ceux-ci ;-)

Une fois que vous avez la liste des images path, vous les parcourez et appelez $mail->AddEmbeddedImage sur chacune d'entre elles.

Je suppose que cela fonctionnerait très bien (n'ont pas essayé cependant, mais je ne vois pas pourquoi ce ne serait pas). En guise de remarque, l'autre moyen serait de garder les images sur votre serveur pendant quelques jours/semaines/mois, et de ne pas les inclure dans le courrier; il rendrait les mails plus petits, ce qui signifie:

  • moins bandwith passé de votre côté (si votre envoient beaucoup de mails, il peut représenter tout un amout de bande passante)
  • moins de bande consacré à chacun des côté de vos clients - ce qui est bien pour eux aussi ^^
  • moins d'espace utilisé sur leurs disques durs ;-)

Et pour vous assurer que les images ne soient pas effacées/remplacé sur le serveur avant quelques semaines/mois, vous pouvez créer un nouveau répertoire pour chaque newsletter, contenant ses images - et de temps à autre, supprimez les répertoires antérieurs à X jours.

+0

Merci pour votre poste précieux !!! – Roland

+0

vous êtes les bienvenus :-) Amusez-vous! –

Questions connexes