Envoyer des emails en PHP avec Swift Mailer

Dans cet article, nous allons explorer la bibliothèque Swift Mailer, qui vous permet d'envoyer des courriels à partir d'applications PHP. En commençant par l'installation et la configuration, nous allons passer à un exemple concret illustrant divers aspects de l'envoi d'e-mails à l'aide de la bibliothèque Swift Mailer..

Qu'est-ce que Swift Mailer??

Quand il s’agit d’envoyer des courriels dans des applications PHP, vous avez le choix parmi une pléthore d’options. Vous pourriez même créer votre propre wrapper pour configurer rapidement les fonctionnalités de messagerie. Cependant, vous avez toujours de la chance si vous utilisez une bibliothèque bien entretenue et riche en fonctionnalités..

Swift Mailer est une bibliothèque populaire pour l'envoi d'e-mails à partir d'applications PHP. Elle est largement acceptée par la communauté PHP. C'est une bibliothèque riche en fonctionnalités en ce sens qu'elle couvre presque tous les aspects de l'envoi d'e-mails, de la configuration de différents transports à la personnalisation du message envoyé..

En fait, envoyer des courriels à l'aide de la bibliothèque Swift Mailer est un processus assez simple..

  1. Initialiser l'objet Transport (SMTP / Sendmail).
  2. Initialiser l'objet Mailer avec ce transport.
  3. Initialiser l'objet Message.
  4. Formater et envoyer le message.

Dans la section suivante, nous allons passer à travers un exemple concret pour illustrer chacune des étapes susmentionnées..

Installation et configuration

Dans cette section, nous allons passer en revue l’installation et la configuration de la bibliothèque Swift Mailer. L'installation est assez simple, car elle est déjà disponible sous forme de package Composer. Avant de commencer, assurez-vous d'avoir installé Composer, car nous en aurons besoin pour installer la bibliothèque Swift Mailer..

Une fois que vous avez installé Composer, allez-y et récupérez la bibliothèque Swift Mailer en utilisant la commande suivante.

$ composer composer "swiftmailer / swiftmailer: ^ 6.0"

Avec cela, la bibliothèque Swift Mailer doit être installée, ainsi que les dépendances nécessaires dans le répertoire. vendeur annuaire. Et le contenu de la nouvelle création composer.json devrait ressembler à ceci:

"require": "swiftmailer / swiftmailer": "^ 6.0"

C'est donc la partie installation, mais comment êtes-vous censé l'utiliser? En fait, il s’agit simplement d’inclure le autoload.php fichier créé par Composer dans votre application, comme indiqué dans l'extrait suivant.

Comment envoyer des courriels

Dans la section précédente, nous avons exploré l’installation de la bibliothèque Swift Mailer à l’aide de Composer. Dans cette section, nous allons commencer à implémenter un exemple concret.

Allez-y et créez le email.php fichier avec le contenu suivant.

setUsername ('xxxxxxxx') -> setPassword ('xxxxxxxx'); // Créer le mailer en utilisant votre transport créé $ mailer = new Swift_Mailer ($ transport); // Créer un message $ message = new Swift_Message (); // Définit un "objet" $ message-> setSubject ('Message de démonstration utilisant la bibliothèque SwiftMailer.'); // Définit "l'adresse de l'expéditeur" $ message-> setFrom (['[email protected]' => 'nom de l'expéditeur']); // Définir le "Pour l'adresse" [Utiliser la méthode setTo pour plusieurs destinataires, l'argument doit être un tableau] $ message-> addTo ('[email protected]', 'nom du destinataire'); // Ajouter une adresse "CC" [Utiliser la méthode setCc pour plusieurs destinataires, l'argument doit être un tableau] $ message-> addCc ('[email protected]', 'nom du destinataire'); // Ajouter l'adresse "BCC" [Utiliser la méthode setBcc pour plusieurs destinataires, l'argument doit être un tableau] $ message-> addBcc ('[email protected]', 'nom du destinataire'); // Ajoute une "pièce jointe" (les données dynamiques peuvent également être attachées) $ attachment = Swift_Attachment :: fromPath ('example.xls'); $ attachment-> setFilename ('report.xls'); $ message-> attach ($ pièce jointe); // Ajoute "Image" inline $ $ inline_attachment = Swift_Image :: fromPath ('nature.jpg'); $ cid = $ message-> embed ($ inline_attachment); // Définit le "texte" en texte brut $ message-> setBody ("Ceci est le corps du message en texte brut. \ NMerci, \ nAdmin"); // Définit un "Corps" $ message-> addPart ('Ceci est la version HTML du message.
Exemple d'image en ligne:

Merci,
Admin ',' text / html '); // Envoyer le message $ result = $ mailer-> send ($ message); catch (Exception $ e) echo $ e-> getMessage ();

Voyons comment ce code fonctionne.

Initialiser Swift Mailer

La bibliothèque Swift Mailer prend en charge différents transports tels que SMTP et Sendmail lors de l'envoi d'un courrier électronique. Donc, la première chose à faire est d’initialiser le transport objet.

Dans l'exemple ci-dessus, j'ai utilisé le transport SMTP pour envoyer des emails..

$ transport = (new Swift_SmtpTransport ('smtp.hostname', 25)) -> setUsername ('xxxxxxxx') -> setPassword ('xxxxxxxx');

Bien sûr, si vous souhaitez utiliser le protocole Sendmail, vous devez initialiser le fichier correspondant. Swift_SendmailTransport objet.

// Créer le transport SendMail $ transport = new Swift_SendmailTransport ('/ usr / sbin / sendmail -bs');

Une fois le transport créé, nous devons initialiser un objet de messagerie et transmettre le transport que nous avons déjà créé..

// Créer le mailer en utilisant votre transport créé $ mailer = new Swift_Mailer ($ transport);

Créer un message

Après avoir créé les objets transport et mailer, il ne reste plus qu’à instancier le Swift_Message objet et décorer avec les attributs nécessaires.

// Créer un message $ message = new Swift_Message ();

Maintenant, nous allons utiliser le $ message objet pour préparer le contenu de notre message. Pour commencer, le setSubject méthode vous permet de définir l'objet de l'email.

// Définit un "objet" $ message-> setSubject ('Message de démonstration utilisant la bibliothèque SwiftMailer.');

le setFrom méthode est utilisée pour définir l'adresse "De" de l'email.

// Définit "l'adresse de l'expéditeur" $ message-> setFrom (['[email protected]' => 'Nom de l'expéditeur']);

Pour aller de l'avant, définissons l'adresse "À" de l'e-mail. En fait, il existe quelques variantes pour définir les destinataires du courrier électronique. Si vous souhaitez définir un seul destinataire, vous pouvez utiliser le ajouter à méthode et mis à La méthode, en revanche, est utilisée pour définir plusieurs destinataires.

// Définissez le "Pour l'adresse" [Utiliser la méthode setTo pour plusieurs destinataires, l'argument doit être un tableau] $ message-> addTo ('[email protected]', 'nom du destinataire');

le addCc et addBcc les méthodes sont utilisées pour définir les adresses CC et BCC de l'e-mail, respectivement.

// Ajouter une adresse "CC" [Utiliser la méthode setCc pour plusieurs destinataires, l'argument doit être un tableau] $ message-> addCc ('[email protected]', 'nom du destinataire'); // Ajouter l'adresse "BCC" [Utiliser la méthode setBcc pour plusieurs destinataires, l'argument doit être un tableau] $ message-> addBcc ('[email protected]', 'nom du destinataire');

Joindre des fichiers

Ensuite, voyons comment joindre un fichier à un email.. 

Vous devez d’abord instancier le Swift_Attachment objet avec un nom de fichier valide. Après avoir créé l'objet de pièce jointe, vous pouvez l'ajouter à l'e-mail avec le attacher méthode. En outre, vous pouvez utiliser le setFilename méthode si vous voulez changer le nom du fichier qui apparaîtra dans la pièce jointe du message.

// Ajoute une "pièce jointe" (les données dynamiques peuvent également être attachées) $ attachment = Swift_Attachment :: fromPath ('example.xls'); $ attachment-> setFilename ('report.xls'); $ message-> attach ($ pièce jointe);

En plus des pièces jointes habituelles, vous souhaitez parfois incorporer des images dans le texte du message. Vous pouvez le faire en utilisant le intégrer méthode, comme indiqué dans l'extrait suivant. le intégrer La méthode retourne l’ID unique de l’objet incorporé, que vous pourrez utiliser plus tard dans le message tout en référençant l’image via le src propriété.

// Ajoute "Image" inline $ $ inline_attachment = Swift_Image :: fromPath ('nature.jpg'); $ cid = $ message-> embed ($ inline_attachment);

Le corps du message

Ensuite, définissons le corps de l’email en utilisant le setBody méthode.

// Définit le "texte" en texte brut $ message-> setBody ("Ceci est le corps du message en texte brut. \ NMerci, \ nAdmin");

Si vous souhaitez définir la version HTML du message, vous pouvez utiliser le addPart méthode, comme indiqué dans l'extrait suivant. Comme vous pouvez le voir, nous utilisons $ cid faire référence à l'image que nous avons intégrée plus tôt.

// Définit un "Corps" $ message-> addPart ('Ceci est la version HTML du message.
Exemple d'image en ligne:

Merci,
Admin ',' text / html ');

Envoyer le message!

Enfin, nous allons utiliser le envoyer méthode de l'objet Mailer pour envoyer l'e-mail.

// Envoyer le message $ result = $ mailer-> send ($ message);

Essayez de lancer le script et vous devriez recevoir un email! Faites-moi savoir dans la section commentaire si vous rencontrez des problèmes.

Conclusion

Aujourd'hui, nous avons examiné l'une des bibliothèques PHP les plus populaires pour l'envoi d'e-mails: Swift Mailer. Avec cette bibliothèque, vous pouvez facilement envoyer des emails à partir de vos scripts PHP.

N'hésitez pas à poster vos pensées et vos questions en utilisant le formulaire ci-dessous.