2011-02-02 3 views
0

Je dois envoyer un email quotidien basé sur des données dans la base de données mysql qui se met à jour tous les jours. J'ai besoin qu'il soit en html pour que je puisse mettre des liens là-dedans. J'utiliserai également des images dans l'email. La structure de base sera:email php en utilisant des images mysql, html et imbedding

est Voici la liste:

Nom de l'entreprise (ce qui est un lien) Description succincte d'image (qui est un lien)

nom d'entreprise (qui est un lien) Brève description Image (qui est un lien) . . .

Toutes les données sont dans la base de données mySQL (bien que la « image » dans la base de données est une référence à un fichier par exemple /images/business/image.jpg)

Mes questions est devrais-je utiliser phpmailer (I « ai jamais utilisé auparavant) ou d'utiliser quelque chose comme ceci:

//set up msg 

$msg = "<html><body>Here's the list: <br /><br />"; 
while($i<numofelementsindb){ 
    $business=mysql_result($result, $i,"business"); 
    $description=mysql_result($result, $i,"description"); 
    $msg .= "The business name is <a href='www.example.com'><b>{$business}</b></a> does {$description}<br />\r\n"; 
    $i++; 
} 
$msg .= "</body> 
</html>"; 

//send 

Je ne sais pas non comment incruster l'image dans l'e-mail soit de sorte que tout conseil serait apprécié.
Avez-vous des suggestions de sécurité?

Merci

Répondre

0

En utilisant une classe email mime j'ai écrit, voici le code pour faire ce que vous vouliez:

require 'class.omime.php'; 
$email = new omime('related'); 

$html = "<html><body>Here's the list: <br /><br />"; 
while($i < numofelementsindb) { 
    $business = mysql_result($result, $i,"business"); 
    $description = mysql_result($result, $i,"description"); 
    $imageFilePath = ''; # path to image file 

    $cid = $email->attachFile($imageFilePath); 
    $html.= "The business name is <a href='www.example.com'><strong>{$business}</strong></a> does {$description}<br />\r\n"; 
    $html.= "<img src=\"cid:{$cid}\" alt=\"Image of {$business}\"/><br /><br />\r\n"; 
    $i++; 
} 
$html.= "</body></html>"; 

$email->attachHTML($html); 
$email->send('[email protected]', 'Daily List of Businesses', 'from: [email protected]'); 

Toutes les images seront jointes à l'e-mail afin que vous n'aurez pas à les placer sur un serveur Web. Le destinataire sera toujours demandé s'il veut afficher les images. Vérifiez le omime source page si vous êtes intéressé.

0

Je suggère d'utiliser phpmailer, car il a la méthode prête à presque tout ce dont vous avez besoin. Néanmoins, vous pouvez aussi utiliser la fonction simple mail() de php, mais sachez que si vous voulez un mail HTML vous devez spécifier le MIME et le type de contenu dans les en-têtes, ou ça ne marchera pas (il affichera les tags comme).

$header = 'MIME-Version: 1.0' . "\r\n"; 
$header .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n"; 

Les images peuvent être intégrés de la même façon que vous faites dans une page Web (<img src=....); Gardez à l'esprit que de nombreux afficheurs de courrier sont configurés pour ne pas charger les images dans les corps de messagerie par défaut, en demandant aux utilisateurs de les charger uniquement s'ils le souhaitent. Et soyez très sûr de l'origine de ces images, car elles sont sujettes à une vulnérabilité xss si elles proviennent d'utilisateurs. Dans ce cas, échappez avant de sortir en html.

Questions connexes