Maison > développement back-end > tutoriel php > PHP Master | Envoi d'e-mails avec Swift Mailer

PHP Master | Envoi d'e-mails avec Swift Mailer

尊渡假赌尊渡假赌尊渡假赌
Libérer: 2025-02-25 14:16:11
original
390 Les gens l'ont consulté

PHP Master | Sending Email with Swift Mailer

PHP Master | Envoi d'e-mails avec Swift Mailer

Les plats clés

  • Swift Mailer est une bibliothèque puissante basée sur des composants qui permet aux programmeurs d'envoyer des e-mails facilement à l'aide d'une approche orientée objet, avec des exigences minimales de PHP 5.2 ou plus avec l'extension SPL et une limite de mémoire minimale de 8 Mo
  • Swift Mailer peut être installé via Pear ou en téléchargeant les fichiers à l'aide d'un FTP. Il se compose de plus de 150 classes et interfaces, y compris le mailer, les transporteurs, les entités MIME, les encodeurs et les plugins.
  • Swift Mailer fournit des fonctionnalités pour créer un e-mail avec plusieurs destinataires, un sujet et un corps en texte clair. Il permet également les pièces jointes, la configuration SMTP personnalisée et le suivi des destinataires qui ne reçoivent pas l'e-mail.
  • Swift Mailer possède également un plugin de décorateur qui vous permet d'envoyer le même e-mail à plusieurs destinataires avec de petites différences, comme le nom du destinataire à l'intérieur du corps de messagerie. Ceci est bénéfique pour les tâches comme l'envoi de newsletters aux abonnés.
L'envoi de courriels par programme est une tâche courante que les programmeurs doivent faire face souvent. Bien que vous puissiez utiliser les fonctions natives de PHP, elles peuvent être trop bas, surtout lorsque vous souhaitez joindre un ou plusieurs fichiers à votre message. Si vous ne souhaitez pas utiliser les fonctions natives, ou si vous souhaitez envoyer un courrier à l'aide d'une approche orientée objet, c'est l'article pour vous. Je vous présenterai Swift Mailer, une bibliothèque puissante basée sur des composants qui vous permet d'envoyer des e-mails facilement. Démarré en 2005, Swift Mailer est une bibliothèque qui fournit plusieurs classes qui vous permettent d'envoyer des e-mails à partir de vos scripts PHP ou applications Web. Swift Mailer a certaines exigences, mais ils sont minimes; La bibliothèque a besoin de PHP 5.2 ou plus avec l'extension SPL et une limite de mémoire minimale de 8 Mo. Citant la documentation officielle, l'installation de Swift Mailer est triviale. Habituellement, il s'agit simplement de télécharger les fichiers source extraits sur votre serveur Web. Le moyen le plus simple d'installer la bibliothèque est de poire ou de télécharger les fichiers à l'aide d'un FTP. L'installation à partir du canal de poire n'est qu'une question de commandes de type deux:
pear channel-discover pear.swiftmailer.org
pear install swift/swift
Copier après la connexion
Copier après la connexion
Copier après la connexion
La deuxième méthode est probablement la plus simple si vous êtes sur un hébergement partagé et que vous n'avez pas accès au shell de commande. Téléchargez simplement la bibliothèque sur le site officiel et téléchargez le dossier Lib.

La famille de cours Swift Mailer

Swift Mailer est composé de plus de 150 classes et interfaces regroupées en plusieurs composants. Chacun d'eux a un but spécifique.
  • Mailer: Le Mailer, qui est réalisé par la classe SWIFT_MAILER, est la classe centrale de la bibliothèque et celle qui envoie réellement l'e-mail via la méthode Send (). Son constructeur accepte une instance d'une classe qui implémente l'interface swift_transport qui vous permet d'envoyer un e-mail à l'aide d'un SMTP personnalisé
  • Transporteurs: ils implémentent l'interface swift_transport et leur portée consiste à communiquer avec un service pour livrer un e-mail. Les classes principales sont SWIFT_SMTPTRANSPORT qui utilise le protocole SMTP, SWIFT_SENDMAILTRANSPORT qui communique avec un exécutable Sendmail local, et SWIFT_MAILTRANSPORT qui repose sur la fonction PHP Native Mail ().
  • MIME Entités: Il s'agit d'un composant clé de la bibliothèque. La classe que vous utiliserez pour spécifier le récepteur, le sujet, le corps et ainsi de suite, appelé Swift_Message, est composé de plusieurs entités qui sont regroupées. Deux exemple d'entités sont les pièces jointes et l'en-tête de messagerie.
  • Encodeurs: ce composant n'est pas quelque chose que vous allez gérer car il agit dans les coulisses. Il existe deux types d'encodeurs: Base64 et imprimé cité. Leur objectif est de transformer le contenu en un format conforme aux spécifications RFC.
  • Plugins: ceux-ci sont utilisés pour étendre les fonctionnalités de base de Swift Mailer. Certains des plugins sont antiformes, ce qui vous permet de limiter le nombre de messages envoyés lors d'une seule connexion SMTP, enregistreur, utilisé pour enregistrer ce qui se passe pendant le processus d'envoi et le décorateur, un plugin incroyable qui vous permet d'utiliser un modèle de messagerie et changer quelques différences dans le texte de messagerie.

un exemple de base

Avec moi jusqu'à présent? Bien. Maintenant que vous avez une idée de la façon dont les composants sont organisés dans la bibliothèque, salissons nos mains et voyons comment profiter de la puissance et de la flexibilité de Swift Mailer. Dans cet premier exemple et très simple, je vais vous montrer la création d'un e-mail qui a deux destinataires, un sujet et un corps en texte clair. Une fois créé, il sera envoyé aux destinataires. Le code suivant utilise trois des classes mentionnées dans la section précédente: SWIFT_MAILTRANSPORT, SWIFT_MAILER et SWIFT_MESSAGE. En outre, notez la première ligne du code, le require_once qui attire l'autoloder de Swift Mailer qui est nécessaire pour utiliser la bibliothèque.
pear channel-discover pear.swiftmailer.org
pear install swift/swift
Copier après la connexion
Copier après la connexion
Copier après la connexion
Comme vous pouvez le voir, Swift_MailTransport est utilisé pour créer une instance d'une couche de transport qui utilisera la fonction PHP Mail () native. Puis j'ai créé un swift_message Instance que vous pouvez considérer comme l'objet e-mail. Dans les lignes suivantes, je définis les destinataires à l'aide de la méthode setTo (), le sujet e-mail à l'aide de setSubject (), le corps de messagerie à l'aide de setBody () et l'expéditeur à l'aide de la méthode setFrom (). Avec la couche définie et l'e-mail créé, il est temps d'envoyer réellement l'e-mail, ce qui est fait en utilisant la méthode Send () de la classe Swift_Mailer.

un exemple avec les pièces jointes

Il ne fait aucun doute que les pièces jointes sont un aliment de base des systèmes de messagerie d’aujourd’hui. Personne ne peut vivre sans eux. Cet exemple légèrement plus compliqué vous montrera comment envoyer un e-mail qui a non seulement une pièce jointe mais aussi d'autres fonctionnalités.
  • Deux récepteurs supplémentaires, un en CC et le second de BCC en utilisant SetCC () et SetBcc ().
  • Une pièce jointe récupérée à partir du disque à l'aide de la méthode attachée ().
  • Une configuration SMTP personnalisée à l'aide de la classe SWIFT_SMTPTRANSPORT.
  • Sachez quels destinataires n'ont pas reçu l'e-mail en utilisant le deuxième paramètre de la méthode Send ().
pear channel-discover pear.swiftmailer.org
pear install swift/swift
Copier après la connexion
Copier après la connexion
Copier après la connexion
J'ai utilisé une couche de transport différente, une SMTP qui est définie en utilisant la classe SWIFT_SMTPTRANSPORT. Il accepte deux paramètres: le serveur SMTP et le port de connexion. Vous utilisez l'instance pour définir un nom d'utilisateur et un mot de passe appropriés pour accéder au serveur à l'aide des méthodes SetUserName () et SetPassword (). Ensuite, tout comme le premier exemple, j'ai créé un objet Swift_Message et défini les destinataires, le sujet, etc. Cependant, cette fois, j'ai également profité du setcc () et du setBCC () Des méthodes qui, comme vous pouvez le deviner, vous permettent de définir des bénéficiaires de copie carbone et aveugle. La méthode clé de cet exemple est attach () qui joigne un fichier tiré du disque dur à l'aide de la méthode statique de FromPath () qui emmène le chemin vers le fichier que vous souhaitez attacher comme paramètre. Notez que cette fois, j'imprime également le nombre de destinataires défaillants récupérés à l'aide du deuxième paramètre de la méthode Send ().

en utilisant un modèle

Le troisième et dernier exemple vous montre comment utiliser le plugin décorateur, idéal pour des choses comme l'envoi de newsletters à vos abonnés. Il vous permet d'envoyer le même e-mail à plusieurs destinataires ayant de petites différences telles que le nom du destinataire dans le corps de l'e-mail. Le plugin sera à l'intérieur du modèle (le corps) et remplacera les espaces réservés par les valeurs définies. Pour utiliser le plugin, vous devez d'abord l'enregistrer à l'aide de la méthode RegisterPlugin (), puis créer et utiliser un tableau de valeurs de remplacement. Dans le code suivant, je mettrai deux espaces réservés, Nom d'utilisateur et Transactions , qui seront remplacés par programme par des valeurs faisant référence à l'e-mail de l'utilisateur.
<span><span><?php
</span></span><span><span>require_once 'lib/swift_required.php';
</span></span><span>
</span><span><span>// Create the mail transport configuration
</span></span><span><span>$transport = Swift_MailTransport<span>::</span>newInstance();
</span></span><span>
</span><span><span>// Create the message
</span></span><span><span>$message = Swift_Message<span>::</span>newInstance();
</span></span><span><span>$message->setTo(array(
</span></span><span>  <span>"hello@gmail.com" => "Aurelio De Rosa",
</span></span><span>  <span>"test@fake.com" => "Audero"
</span></span><span><span>));
</span></span><span><span>$message->setSubject("This email is sent using Swift Mailer");
</span></span><span><span>$message->setBody("You're our best client ever.");
</span></span><span><span>$message->setFrom("account@bank.com", "Your bank");
</span></span><span>
</span><span><span>// Send the email
</span></span><span><span>$mailer = Swift_Mailer<span>::</span>newInstance($transport);
</span></span><span><span>$mailer->send($message);</span></span>
Copier après la connexion
Le constructeur du plugin décorateur accepte un paramètre: un tableau de valeurs pour remplacer les espaces réservés. Chaque valeur de ce tableau utilise l'e-mail de l'utilisateur pour sa clé et un sous-tableau qui contient des paires de remplacement d'espace réservé. C'est exactement l'objectif du tableau de remplacement $. Dans l'exemple ci-dessus, en tant qu'ensembles d'espaces d'espaces, j'ai utilisé une chaîne à l'intérieur de deux supports (c'est-à-dire {FullName}) Mais vous pouvez utiliser ce que vous voulez. Cette fois, je n'ai pas défini tous les destinataires dans la même déclaration qu'avant et j'ai utilisé un pour Loop. Cela se fait parce que le plugin intercepte le processus d'envoi, lit l'e-mail du destinataire et remplace les espaces réservés en utilisant les valeurs du tableau de remplacement.

Conclusion

Dans cet article, j'ai montré comment vous pouvez facilement envoyer des e-mails à l'aide de Swift Mailer. Il s'agit d'une bibliothèque très puissante qui, comme vous l'avez vu, vous permet de faire beaucoup de choses en utilisant une approche OOP. Bien sûr, Swift Mailer a beaucoup d'autres méthodes et classes que je n'ai pas couvertes dans cet article. Vous pouvez les étudier dans la documentation officielle, mais cela devrait suffire à vous faire commencer à envoyer des e-mails sans tracas. Image via Fotolia

Les questions fréquemment posées sur Swift Mailer

Comment puis-je installer Swift Mailer à l'aide du composer?

Swift Mailer peut être facilement installé à l'aide de Composer, un outil pour la gestion de la dépendance dans PHP. Pour installer Swift Mailer, vous devez faire installer le compositeur sur votre système. Une fois que le compositeur est installé, vous pouvez installer Swift Mailer en exécutant la commande suivante dans votre répertoire de projet: le compositeur nécessite "SwiftMailer / SwiftMailer: ^ 6.0". Cette commande indique au compositeur de télécharger le package Swift Mailer et ses dépendances dans votre projet.

Comment puis-je envoyer un e-mail avec Swift Mailer?

L'envoi d'un e-mail avec Swift Mailer implique la création d'un message, Configuration du mailer et envoi du message. Voici un exemple de base de la façon d'envoyer un e-mail avec Swift Mailer:

require_once '/path/to/vendor/autoload.php' ;

$Message = (new swift_message ()))
-> setSubject ('Hello')
-> setFrom (['John@doe.com' => 'John Doe'])
-> setTo (['receiver@domain.org', 'autre@domain.org' => 'un nom'])
-> setBody ('voici le message lui-même');

$ Transport = (new Swift_SmtpTransport ('Smtp.example.org', 25))
-> SetUsername ('votre nom d'utilisateur')
-> setPassword ('votre mot de passe');

$ Mailer = new Swift_Mailer ($ Transport);

$ result = $ Mailer-> Send ($ message);

Comment puis-je ajouter des pièces jointes à un e-mail avec Swift Mailer?

Swift Mailer vous permet d'ajouter des pièces jointes à vos e-mails. Vous pouvez joindre des fichiers à partir d'un chemin, d'une chaîne ou d'une instance de pièce jointe Swift existante. Voici un exemple de comment joindre un fichier à partir d'un chemin:

$ message = (new swift_message ())
-> setSubject ('Bonjour')
-> setFrom (['John @ doe.com '=>' John Doe '])
-> setTo ([' receiver@domain.org '])
-> setBody (' Voici le message lui-même ')
-> attacher (swift_attachment :: frompath (' path / to / image.jpg '));

Comment puis-je envoyer des e-mails HTML avec Swift Mailer?

Swift Mailer vous permet d'envoyer des e-mails HTML en définissant le corps du message à une chaîne HTML et en définissant le type de contenu à «SMS / HTML». Voici un exemple:

$ message = (new Swift_Message ())
-> setSubject ('Hello')
-> setFrom (['John@doe.com' => 'John Doe '])
-> setTo ([' receiver@domain.org '])
-> setbody ('

voici le html Message lui-même

',' text / html ');

comment puis-je gérer les erreurs dans Swift Mailer?

Swift Mailer lance des exceptions lorsqu'une erreur se produit. Vous pouvez assister à ces exceptions pour gérer les erreurs. Voici un exemple:

essayez {
$ result = $ Mailer-> send ($ message);
} catch (swift_transportException $ e) {
echo 'Il y a eu une erreur pendant que Envoi de l'e-mail: '. $ e-> getMessage ();
}

comment puis-je utiliser Swift Mailer avec gmail?

Vous pouvez utiliser Swift Mailer avec Gmail en configurant le transport SMTP avec le serveur SMTP Gmail paramètres. Voici un exemple:

$ Transport = (new Swift_SmtpTransport ('smtp.gmail.com', 465, 'ssl'))
-> setUsername ('Votre nom d'utilisateur Gmail')
- - > setPassword ('Votre mot de passe gmail');

comment puis-je envoyer plusieurs e-mails avec Swift Mailer?

Vous pouvez envoyer plusieurs e-mails avec Swift Mailer en créant plusieurs instances de message et en les envoyant avec la même instance de Mailer. Voici un exemple:

$ message1 = (new Swift_Message ())
-> setSubject ('Hello')
-> setFrom (['John@doe.com' => 'John Doe '])
-> setTo ([' receiver1@domain.org '])
-> setBody (' Voici le message lui-même ');

$ message2 = (new Swift_Message ())
-> setSubject (' Hello ')
-> setFrom ([' John@doe.com '=>' John Doe '])
-> setTo ([' receiver2@domain.org '])
-> setBody (' Voici le message lui-même ');

$ result1 = $ Mailer-> Send ($ message1);
$ result2 = $ Mailer-> send ($ message2);

comment puis-je utiliser Swift Mailer avec Symfony?

Swift Mailer est intégré à Symfony et peut être utilisé comme service. Vous pouvez envoyer des e-mails avec Swift Mailer dans Symfony en obtenant le service Mailer et en l'utilisant pour envoyer un message. Voici un exemple:

$ message = (new Swift_Message ())
-> setSubject ('Hello')
-> setFrom (['John@doe.com' => 'John Doe '])
-> setTo ([' receiver@domain.org '])
-> setBody (' Voici le message lui-même ');

$ this-> get (' Mailer ') -> Envoyer ($ message);

comment puis-je définir la priorité d'un e-mail avec Swift Mailer?

Vous pouvez définir la priorité d'un e-mail avec Swift Mailer en appelant la méthode SetPriority sur l'instance de message. La priorité est un entier entre 1 (le plus élevé) et 5 (le plus bas). Voici un exemple:

$ message = (new Swift_Message ())
-> setSubject ('Hello')
-> setFrom (['John@doe.com' => 'John Doe '])
-> setTo ([' receiver@domain.org '])
-> setBody (' Voici le message lui-même ')
-> setPriority (1);

Comment puis-je envoyer des e-mails de manière asynchrone avec Swift Mailer?

Swift Mailer ne prend pas en charge les e-mails asynchrones envoyés de la boîte. Cependant, vous pouvez y parvenir en utilisant une file d'attente de messages. Vous pouvez mettre en place des messages, puis les envoyer dans un processus distinct. Cela permet à votre application de continuer à traiter d'autres tâches sans attendre que les e-mails soient envoyés.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal