Verzend e-mails in PHP met behulp van Swift Mailer

In dit artikel gaan we de Swift Mailer-bibliotheek verkennen, waarmee u e-mails kunt verzenden vanuit PHP-toepassingen. Beginnend met de installatie en configuratie, zullen we een realistisch voorbeeld bekijken dat verschillende aspecten van het verzenden van e-mails toont met behulp van de Swift Mailer-bibliotheek.

Wat is Swift Mailer?

Als het gaat om het verzenden van e-mails in PHP-applicaties, hebt u een overvloed aan opties om uit te kiezen. U kunt zelfs uw eigen wrapper maken om e-mailfuncties snel in te stellen. Je hebt echter altijd geluk als je een goed onderhouden bibliotheek met veel functies gebruikt.

Swift Mailer is een populaire bibliotheek voor het verzenden van e-mails van PHP-applicaties en wordt algemeen aanvaard door de PHP-gemeenschap. Het is een bibliotheek met veel functies, in die zin dat het bijna elk aspect van het verzenden van e-mails dekt, van het instellen van verschillende transporten tot het aanpassen van het bericht dat wordt verzonden.

In feite is het een vrij eenvoudig proces om e-mails te verzenden met de Swift Mailer-bibliotheek.

  1. Initialiseer het Transport (SMTP / Sendmail) -object.
  2. Initialiseer het Mailer-object met dat transport.
  3. Initialiseer het bericht-object.
  4. Formatteer en verzend het bericht.

In het volgende gedeelte zullen we een voorbeeld uit de praktijk bekijken om elk van de bovengenoemde stappen te demonstreren.

Installatie en configuratie

In deze sectie zullen we de installatie en configuratie van de Swift Mailer-bibliotheek doornemen. De installatie is vrij eenvoudig, omdat deze al beschikbaar is als Composer-pakket. Voordat we verder gaan, moet Composer zijn geïnstalleerd, omdat we het nodig hebben om de Swift Mailer-bibliotheek te installeren.

Nadat u Composer hebt geïnstalleerd, kunt u de Swift Mailer-bibliotheek gebruiken met de volgende opdracht.

$ composer vereist "swiftmailer / swiftmailer: ^ 6.0"

Daarmee moet de Swift Mailer-bibliotheek worden geïnstalleerd, samen met de noodzakelijke afhankelijkheden in de verkoper directory. En de inhoud van de nieuw gecreëerde composer.json zou er als volgt uit moeten zien:

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

Dus dat is het installatiedeel, maar hoe moet je het gebruiken? In feite is het gewoon een kwestie van het opnemen van de autoload.php bestand gemaakt door Composer in uw toepassing, zoals getoond in het volgende fragment.

Hoe e-mails verzenden

In het vorige gedeelte hebben we onderzocht hoe de Swift Mailer-bibliotheek met Composer kan worden geïnstalleerd. In dit gedeelte gaan we een realistisch voorbeeld implementeren.

Ga je gang en maak de email.php bestand met de volgende inhoud.

setUsername ('xxxxxxxx') -> setPassword ('xxxxxxxx'); // Maak de Mailer met uw gemaakte Transport $ mailer = nieuwe Swift_Mailer ($ transport); // Maak een bericht $ message = new Swift_Message (); // Stel een "subject" $ message-> setSubject in ('Demo-bericht met de SwiftMailer-bibliotheek.'); // Stel het "Van-adres" $ message-> setFrom (['[email protected]' => 'afzendernaam']); // Stel de "To address" in [Gebruik de setTo-methode voor meerdere ontvangers, het argument moet array zijn] $ message-> addTo ([email protected] ',' recipient name '); // Toevoegen "CC" -adres [Gebruik setCc-methode voor meerdere ontvangers, argument moet array zijn] $ message-> addCc ([email protected] ',' naam ontvanger '); // Voeg 'BCC'-adres toe [Gebruik setBcc-methode voor meerdere ontvangers, argument moet array zijn] $ message-> addBcc ([email protected]', 'naam van ontvanger'); // Voeg een "Bijlage" toe (Ook kunnen de dynamische gegevens worden bijgevoegd) $ attachment = Swift_Attachment :: fromPath ('example.xls'); $ Montage-> setFilename ( 'Rapport.xls'); $ Bericht-> attach ($ bijlage); // Voeg inline toe "Afbeelding" $ inline_attachment = Swift_Image :: fromPath ('nature.jpg'); $ cid = $ message-> embed ($ inline_attachment); // Stel de platte tekst in op "Body" $ message-> setBody ("Dit is de hoofdtekst van het bericht. \ NBedankt, \ nAdmin"); // Stel een "Body" $ message-> addPart ('Dit is de HTML-versie van het bericht.
Voorbeeld van inline afbeelding:

Bedankt,
Admin ',' text / html '); // Stuur het bericht $ result = $ mailer-> send ($ message); catch (Uitzondering $ e) echo $ e-> getMessage ();

Laten we doornemen hoe deze code werkt.

Initialiseer Swift Mailer

De Swift Mailer-bibliotheek ondersteunt verschillende transporten zoals SMTP en Sendmail tijdens het verzenden van een e-mail. Dus het eerste dat u moet doen, is het initialiseren van de vervoer- voorwerp.

In het bovenstaande voorbeeld heb ik het SMTP-transport gebruikt om e-mails te verzenden.

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

Als u het Sendmail-protocol wilt gebruiken, moet u natuurlijk het overeenkomstige initialiseren Swift_SendmailTransport voorwerp.

// Maak de SendMail Transport $ transport = nieuwe Swift_SendmailTransport ('/ usr / sbin / sendmail -bs');

Nadat het transport is gemaakt, moeten we een mailer-object initialiseren en het transport dat we al hebben gemaakt, doorgeven.

// Maak de Mailer met uw gemaakte Transport $ mailer = nieuwe Swift_Mailer ($ transport);

Maak een bericht

Na het maken van de transport- en mailer-objecten, is het enige overblijvende ding om de Swift_Message object en versier het met de nodige attributen.

// Maak een bericht $ message = new Swift_Message ();

Nu gebruiken we de $ message object om de inhoud van ons bericht voor te bereiden. Om te beginnen, de SetSubject methode stelt u in staat om het onderwerp van de e-mail in te stellen.

// Stel een "subject" $ message-> setSubject in ('Demo-bericht met de SwiftMailer-bibliotheek.');

De setFrom methode wordt gebruikt om het "Van" -adres van de e-mail in te stellen.

// Stel het "Van adres" $ message-> setFrom (['[email protected]' => 'Naam afzender']);

Laten we verder gaan, laten we het "Aan" -adres van de e-mail instellen. Er zijn zelfs een aantal varianten om de ontvangers van de e-mail in te stellen. Als u een enkele ontvanger wilt instellen, kunt u de toevoegen aan methode, en de Setto methode, aan de andere kant, wordt gebruikt om meerdere ontvangers in te stellen.

// Stel de "To address" in [Gebruik de setTo-methode voor meerdere ontvangers, het argument moet array zijn] $ message-> addTo ([email protected] ',' receiver name ');

De addCc en addBcc methoden worden gebruikt om respectievelijk de CC- en BCC-adressen van de e-mail in te stellen.

// Toevoegen "CC" -adres [Gebruik setCc-methode voor meerdere ontvangers, argument moet array zijn] $ message-> addCc ([email protected] ',' naam ontvanger '); // Voeg 'BCC'-adres toe [Gebruik setBcc-methode voor meerdere ontvangers, argument moet array zijn] $ message-> addBcc ([email protected]', 'naam van ontvanger');

Bestanden toevoegen

Laten we vervolgens eens kijken hoe u een bestand kunt toevoegen aan een e-mail. 

U moet eerst de Swift_Attachment object met een geldige bestandsnaam. Nadat u het bijlageobject hebt gemaakt, kunt u dit toevoegen aan de e-mail met de hechten methode. U kunt ook de setFilename methode als u de bestandsnaam wilt wijzigen die in de bijlage van het bericht zal verschijnen.

// Voeg een "Bijlage" toe (Ook kunnen de dynamische gegevens worden bijgevoegd) $ attachment = Swift_Attachment :: fromPath ('example.xls'); $ Montage-> setFilename ( 'Rapport.xls'); $ Bericht-> attach ($ bijlage);

Naast normale bestandsbijlagen wilt u soms afbeeldingen in de berichttekst insluiten. U kunt dat doen door de embed methode, zoals getoond in het volgende fragment. De embed methode retourneert het unieke ID van het ingesloten object, dat u later in het bericht kunt gebruiken terwijl u naar de afbeelding verwijst via de src eigendom.

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

Het berichtteam

Stel vervolgens de hoofdtekst van de e-mail in met behulp van de setBody methode.

// Stel de platte tekst in op "Body" $ message-> setBody ("Dit is de hoofdtekst van het bericht. \ NBedankt, \ nAdmin");

Als u de HTML-versie van het bericht wilt instellen, kunt u de addPart methode, zoals getoond in het volgende fragment. Zoals je kunt zien, gebruiken we $ cid om te verwijzen naar de afbeelding die we eerder hebben ingesloten.

// Stel een "Body" $ message-> addPart ('Dit is de HTML-versie van het bericht.
Voorbeeld van inline afbeelding:

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

Stuur het bericht!

Ten slotte zullen we de sturen methode van het Mailer-object om de e-mail te verzenden.

// Stuur het bericht $ result = $ mailer-> send ($ message);

Probeer het script uit te voeren, en je zou een e-mail moeten ontvangen! Laat het me weten in het gedeelte Opmerkingen als u problemen ondervindt.

Conclusie

Vandaag hebben we gekeken naar een van de meest populaire PHP-bibliotheken voor het verzenden van e-mails: Swift Mailer. Met deze bibliotheek kunt u moeiteloos e-mails verzenden vanuit uw PHP-scripts.

Voel je vrij om je gedachten en vragen te plaatsen met behulp van het onderstaande formulier.