Fonction d'envoi d'e-mail avec PHPMailer

Article ajouté le 30/12/2018

PHPMailer est une librairie très complète qui va vous permettre d'envoyer des e-mails en PHP sans que vous ayez à vous casser la tête avec les normes et le spam.

Si par exemple vous disposez d'un formulaire d'inscription sur votre site, vous pouvez grâce à cette outil envoyer un email de confirmation d'inscription. Ce message sera traité avant d'être envoyé afin d'éviter qu'il n'apparaisse en tant que spam.

Dans le script que je vous propose ci-dessous, vous retrouverez l'une de ces utilisations dans laquelle j'ai intégré la possibilité de gérer des templates de mails. C'est très utile quand on souhaite envoyer des e-mails à ses internautes au format HTML au design et au couleur de son site.

Fonction d'envoi d'e-mail PHP

require 'phpmailer/PHPMailerAutoload.php';

function envoi($name, $from, $to, $object, $html, $text)
{
	$mail = new PHPMailer();
	$mail->IsHTML(true);
	$mail->CharSet = "text/html; charset=UTF-8;";
	
	// AOL et YAHOO EN DMARC POLICY Restrictif
	if ((substr_count(strtolower($fromEmail),"aol.com")>0)||(substr_count(strtolower($fromEmail),"yahoo.com"))>0)
	{
		$mail->SetFrom("nom@domain.fr", "nom");
		$mail->Sender = "nom@domain.fr";
		$mail->AddReplyTo($from, $name);
	}
	// LES AUTRES BOITES MAILS
	else
	{
		$mail->SetFrom($from, "nom");
		$mail->Sender = $from;
		$mail->AddReplyTo($from, $name);
	}
	
	$mail->FromName = "nom";
	$mail->AddAddress($to);
	$mail->Subject = $object;
	$mail->Body = $html; 
	$mail->AltBody = $text;

	if(!$mail->Send())
	{
		throw new Exception("Mailer Error: " . $mail->ErrorInfo);
	}
	
	unset($mail);
}

function envoi_email($object='Nouveau message',
					$intro='Madame/Monsieur,',
					$info='Un internaute vous a laissé un message. Retrouvez ci-après le message et les coordonnées de la personne.',
					$message,
					$from,
					$to,
					$nom,
					$societe,
					$adresse,
					$cp,
					$ville,
					$tel,
					$template='')
{
	require 'template.php';
	
	if(isset($tmpl) && !empty($tmpl))
	{
		$name = $nom;
		if(!empty($societe)){ $name = $societe; }

		$coordonnees = $nom;
		if(!empty($societe)){ $coordonnees .= "\nSociété ".$societe; }
		if(!empty($adresse)){ $coordonnees .= "\n".$adresse; }
		if(!empty($cp)){ $coordonnees .= "\n".$cp; }
		if(!empty($ville)){ $coordonnees .= " ".$ville; }
		if(!empty($tel)){ $coordonnees .= "\nTél. : ".$tel; }
		if(!empty($from) && $from!=EMAIL_SITE_FROM){ $coordonnees .= "\nE-mail : ".$from; }
		
		$html = str_replace('<{[title]}>', stripslashes($object), $tmpl);
		$html = str_replace('<{[intro]}>', nl2br(stripslashes($intro)), $html);
		$html = str_replace('<{[info]}>', nl2br(stripslashes($info)), $html);
		$html = str_replace('<{[message]}>', nl2br(stripslashes($message)).'

'.nl2br(stripslashes($coordonnees)), $html);
		
		$text = strip_tags($intro)."\n\n".strip_tags($info)."\n-----------------------\n".strip_tags($message)."\n\n".strip_tags($coordonnees);
		
		$totab = explode(",", $to);
		foreach($totab as $emailto)
		{
			envoi($name, $from, $emailto, $object, $html, $text);
		}
	}
}

Le template du mail appelé dans la fonction

Il s'agit ici de mon propre template pour le site p3x. A vous de l'adapter à vos couleurs et vos envies.

<?php
	$tmpl = '<!doctype html>
				<html lang="fr-FR">
					<head>
						<title><{[title]}></title>
						<meta charset="utf-8" />
					</head>
					<body style="color:#313131;font-family:Arial;font-size:12px;background-color:#F8F8F8;">
						<table border="0" width="600" style="margin:auto;font-size:12px;border-collapse:collapse;">
							<tr>
								<td style="background-color:#2A2A2A;border-bottom:10px solid #3b3b3b;">
									<table border="0" id="menu" style="border-collapse:collapse;">
										<tr>
											<td style="padding:15px;"><a href="'.URL_SITE.'"><img style="border:0px;" src="'.URL_MEDIA.'images/graphic/p3x-small.png" alt="p3x.fr" /></a></td>
											<td style="padding:15px;border-left:1px solid #000000;text-align:center;"><a style="color:#ffffff;font-size:14px;font-weight:bold;" href="'.URL_SITE.'realisations">Réalisations</a></td>
											<td style="padding:15px;border-left:1px solid #000000;text-align:center;"><a style="color:#ffffff;font-size:14px;font-weight:bold;" href="'.URL_SITE.'offres-emploi-web">Emplois</a></td>
											<td style="padding:15px;border-left:1px solid #000000;text-align:center;"><a style="color:#ffffff;font-size:14px;font-weight:bold;" href="'.URL_SITE.'devis-en-ligne">Devis</a></td>
											<td style="padding:15px;border-left:1px solid #000000;text-align:center;"><a style="color:#ffffff;font-size:14px;font-weight:bold;" href="'.URL_SITE.'atelier">L\'atelier</a></td>
											<td style="padding:15px;border-left:1px solid #000000;text-align:center;"><a style="color:#ffffff;font-size:14px;font-weight:bold;" href="'.URL_TRADING.'">Trading</a></td>
											<td style="padding:15px;border-left:1px solid #000000;text-align:center;"><a style="color:#ffffff;font-size:14px;font-weight:bold;" href="'.URL_SITE.'contact">Contact</a></td>
										</tr>
									</table>
								</td>
							</tr>
							<tr>
								<td style="padding:10px;background-color:#ffffff;border-bottom:1px solid #E7E7E7;">
									<h1 style="font-size:16px;margin-top:0px;"><{[title]}></h1>
									<p><{[intro]}></p>
									<p style="margin-bottom:0px;"><{[info]}></p>
								</td>
							</tr>
							<tr>
								<td style="padding:10px;background-color:#ffffff;border-bottom:1px solid #E7E7E7;"><{[message]}></td>
							</tr>
							<tr>
								<td style="padding:10px;background-color:#ffffff;"><p style="text-align:right;font-style:11px;font-style:italic;margin:0px;">E-mail en provenance du site p3x.fr</td>
							</tr>
							<tr>
								<td style="background-color:#305481;border-top:10px solid #3B689F;color:#ffffff;font-size:11px;padding:10px;">
									<p style="text-align:center;">Pour plus d\'informations concernant p3x ou pour toutes autres demandes<br />vous pouvez envoyer un e-mail à <a style="color:#ffffff;text-decoration:underline;" href="mailto:'.EMAIL_SITE_TO.'">'.EMAIL_SITE_TO.'</a>.</p>
									<p style="border-top:1px solid #264367;"> </p>
									<p style="text-align:center;color:#ffffff;">p3x - Créateur Web</p>
								</td>
							</tr>
						</table>
					</body>
				</html>';
?>

Poster un commentaire

Commentaire

Nom

Adresse e-mail

Votre adresse e-mail n'est pas publiée lorsque vous ajoutez un commentaire.
Tous les champs sont obligatoires pour soumettre votre commentaire.