WhatZeWeb

show me code
  • Accueil
  • Blog
  • Cours
  • Accueil
  • Blog
  • Envoyer un mail avec swift mailer

Envoyer un mail avec Swift Mailer

  • PHP
  • Tuto
PHP

Vous souhaitez envoyer un email avec PHP et vous ne savez pas comment faire ? Vous avez peut-être utilisé la fonction mail de PHP mais vous trouvez ça peu pratique à utiliser ?

En suivant cet article, vous allez pouvoir envoyer des mails simplement, en utilisant SwiftMailer.

Voyons comment envoyer un email avec SwiftMailer.

Commencer par installer la dépendance : 

composer require swiftmailer/swiftmailer

Créons un fichier PHP avec le contenu suivant : 

<?php

echo 'Envoi de mail avec Swift Mailer';

Ajoutons le code fourni par la documentation de Swift Mailer dans notre fichier :

<?php
require_once './vendor/autoload.php';

// Create the Transport
$transport = (new Swift_SmtpTransport('smtp.example.org', 25))
  ->setUsername('your username')
  ->setPassword('your password')
;

// Create the Mailer using your created Transport
$mailer = new Swift_Mailer($transport);

// Create a message
$message = (new Swift_Message('Wonderful Subject'))
  ->setFrom(['john@doe.com' => 'John Doe'])
  ->setTo(['receiver@domain.org', 'other@domain.org' => 'A name'])
  ->setBody('Here is the message itself')
  ;

// Send the message
$result = $mailer->send($message);

Ici rien de compliqué, on fait appel à l'autoload de Composer. Le reste étant chargé de configurer notre envoi d'email.

Juste avant de mettre notre propre configuration, créons un nouveau fichier qui va contenir notre configuration, pour éviter de noyer des données dans le code. 

Pour cela, je vais ici utiliser des constantes, mais libre à vous de faire comme vous le souhaitez. 

Voici notre fichier de configuration :

<?php

const EMAIL_HOST = 'smtp.gmail.com';
const EMAIL_PORT = 587;
const EMAIL_USERNAME = 'votre email';
const EMAIL_PASSWORD = 'votre mot de passe';
const EMAIL_ENCRYPTION = 'tls';
De mon côté, j'utilise ici Gmail, mais en fonction de votre hébergeur de mail, votre configuration peut différer 😉

Modifions maintenant notre fichier original pour y ajouter notre configuration. 

<?php

require './vendor/autoload.php';
require './dev.php'; //Don't forget to add your configuration file

echo 'Envoi de mail avec Swift Mailer';

$transport = (new Swift_SmtpTransport(EMAIL_HOST, EMAIL_PORT))
    ->setUsername(EMAIL_USERNAME)
    ->setPassword(EMAIL_PASSWORD)
    ->setEncryption(EMAIL_ENCRYPTION) //For Gmail 
;

// Create the Mailer using your created Transport
$mailer = new Swift_Mailer($transport);

// Create a message
$message = (new Swift_Message('Wonderful Subject'))
  ->setFrom(['john@doe.com' => 'John Doe'])
  ->setTo(['receiver@domain.org', 'other@domain.org' => 'A name'])
  ->setBody('Here is the message itself')
  ;

// Send the message
$result = $mailer->send($message);

Renseignons maintenant quelques donnés concernant le contenu du message, comme ici : 

<?php

require './vendor/autoload.php';
require './dev.php'; //Don't forget to add your configuration file

echo 'Envoi de mail avec Swift Mailer';

$subject = 'Mon premier email avec Swift Mailer';
$fromEmail = 'toto@toto.com';
$fromUser = 'Toto';
$body = '<!DOCTYPE html>
<html>
<head>
	<title>Mon premier mail</title>
</head>
<body>
    <h1>Hello SwiftMailer</h1>
</body>
</html>';


$transport = (new Swift_SmtpTransport(EMAIL_HOST, EMAIL_PORT))
    ->setUsername(EMAIL_USERNAME)
    ->setPassword(EMAIL_PASSWORD)
    ->setEncryption(EMAIL_ENCRYPTION) //For Gmail
;

// Create the Mailer using your created Transport
$mailer = new Swift_Mailer($transport);

// Create a message
$message = (new Swift_Message($subject))
    ->setFrom([$fromEmail => $fromUser])
    ->setTo([EMAIL_USERNAME])
    ->setBody($body)
;

// Send the message
$result = $mailer->send($message);

Si vous essayez d'accéder à votre page web, vous devriez avoir un message vous indiquant : 

Envoi de mail avec Swift Mailer

Ouvrez votre boîte mail, vous devriez avoir un nouveau petit courrier 😊

Pour ceux qui utilisent Gmail, pensez à désactiver les applications moins sécurisées.

 Si vous ouvrez l'email reçu 😱

Il n'interprète pas le HTML ? 

Si, il peut le faire, à nous de lui dire : 

<?php

require './vendor/autoload.php';
require './dev.php'; //Don't forget to add your configuration file

echo 'Envoi de mail avec Swift Mailer';

$subject = 'Mon premier email avec Swift Mailer';
$fromEmail = 'toto@toto.com';
$fromUser = 'Toto';
$body = '<!DOCTYPE html>
<html>
<head>
	<title>Mon premier mail</title>
</head>
<body>
    <h1>Hello SwiftMailer</h1>
</body>
</html>';


$transport = (new Swift_SmtpTransport(EMAIL_HOST, EMAIL_PORT))
    ->setUsername(EMAIL_USERNAME)
    ->setPassword(EMAIL_PASSWORD)
    ->setEncryption(EMAIL_ENCRYPTION) //For Gmail
;

// Create the Mailer using your created Transport
$mailer = new Swift_Mailer($transport);

// Create a message
$message = (new Swift_Message($subject))
    ->setFrom([$fromEmail => $fromUser])
    ->setTo([EMAIL_USERNAME])
    ->setBody($body, 'text/html')
;

// Send the message
$result = $mailer->send($message);

 Réessayez d'envoyer un email, et le tour est joué.

Je n'ai pas mis les informations qui concernent la personne qui envoie l'email, comme ici l'email, l'utilisateur...

De manière générale, ces données sont récupérées par un formulaire, et vous savez ensuite comment les gérer.

Si vous rencontrez des problèmes avec le SSL, je vous invite à ajouter les lignes suivantes avant tout appel à la classe Swift_SmtpTransport : 

$https['ssl']['verify_peer'] = FALSE;
$https['ssl']['verify_peer_name'] = FALSE;

 

Pour ceux qui n'utilisent pas le SMTP, je vous invite à regarder la documentation de SwiftMailer pour que l'envoi d'email fonctionne.

 

Allez spammer à tout va 😝

Retour au blog

Ajouté le : 24/01/2019 par Karim

Suggestion d'articles et de cours dans les mêmes catégories que "Envoyer un mail avec Swift Mailer" :

JavaScriptAfficher l'heure sur votre site
ComposerInstaller et utiliser Composer
GitCréer un fichier .gitignore global
PHP[COURS] Créer son premier blog en POO en PHP
  • © WhatZeWeb. Tous droits réservés
  • Mentions légales