Envoyer des mails avec PHPMailer et le SMTP de Gmail
Dans ce tutoriel, nous allons voir comment utiliser PHPMailer le service SMTP de Gmail pour envoyer des mails. Si vous vous demandez pourquoi pourrais-t-on utiliser GMail au lieu des serveurs de nos hébergeurs, la réponse est simple. Premièrement, le service est gratuit. Deuxièmement, il y a plus de chance que votre adresse IP ne soit pas black listée, ce qui deviendra un vrai casse tête a résoudre.
Il existe cependant quelques limitations au service de Gmail comme la limite a 500 destinataires par jour. vous pouvez consulter les pages d’aide de google pour plus d’informations.
Pour les exemples ci dessous, vous aurez besoin de PHP5 et du port 465 ouvert, et évidemment d’un compte Gmail.
Le tutoriel :
- Si vous ne possedez pas encore de compte, enregistrez vous a Gmail.
- Telechargez une version recente de PHPMailer
- Assurez vous que le port 465 (TCP sortant) est ouvert – vous pouvez demander a votre hebergeur de le faire.
- Inclure la classe PHPMailer :
require_once('phpmailer/class.phpmailer.php');
- Creer deux constantes contenant votre login et votre mot de passe GMail.
define('GMailUSER', 'votrecompte@gmail.com'); // utilisateur Gmail define('GMailPWD', 'votremotdepasse'); // Mot de passe Gmail
- Pour envoyer vos mails utiliser la function suivante:
function smtpMailer($to, $from, $from_name, $subject, $body) { $mail = new PHPMailer(); // Cree un nouvel objet PHPMailer $mail->IsSMTP(); // active SMTP $mail->SMTPDebug = 0; // debogage: 1 = Erreurs et messages, 2 = messages seulement $mail->SMTPAuth = true; // Authentification SMTP active $mail->SMTPSecure = 'ssl'; // Gmail REQUIERT Le transfert securise $mail->Host = 'smtp.gmail.com'; $mail->Port = 465; $mail->Username = GMailUser; $mail->Password = GMailPWD; $mail->SetFrom($from, $from_name); $mail->Subject = $subject; $mail->Body = $body; $mail->AddAddress($to); if(!$mail->Send()) { return 'Mail error: '.$mail->ErrorInfo; } else { return true; } }
La plupart des configurations sont nécessaires pour utiliser le service de GMail.
- appelez la fonction avec vos parametres :
$result = smtpmailer('destinataire@mail.com', 'votreEmail@mail.com', 'votreNom', 'Votre Message', 'Le sujet de votre message'); if (true !== $result) { // erreur -- traiter l'erreur echo $result; }