Skicka e-post i PHP med hjälp av Swift Mailer

I den här artikeln kommer vi att utforska Swift Mailer-biblioteket, som låter dig skicka e-post från PHP-applikationer. Från och med installationen och konfigurationen går vi igenom ett verkligt exempel som visar olika aspekter av att skicka e-postmeddelanden med hjälp av Swift Mailer-biblioteket.

Vad är Swift Mailer?

När det gäller att skicka e-postmeddelanden i PHP-applikationer, har du en mängd alternativ att välja mellan. Du kan till och med sluta skapa ditt eget wrapper för att snabbt konfigurera e-postfunktioner. Men du har alltid tur om du använder ett väl underhållen och funktionsrik bibliotek.

Swift Mailer är ett populärt bibliotek för att skicka e-post från PHP-applikationer, och det är allmänt accepterat av PHP-community. Det är ett funktionsrikt bibliotek i den meningen att det täcker nästan alla aspekter av att skicka e-postmeddelanden, från att konfigurera olika transporter för att anpassa meddelandet som skickas.

Det är faktiskt en ganska enkel process att skicka e-postmeddelanden med hjälp av Swift Mailer-biblioteket.

  1. Initiera objektet Transport (SMTP / Sendmail).
  2. Initiera Mailer-objektet med den Transporten.
  3. Initiera meddelandobjektet.
  4. Formatera och skicka meddelandet.

I nästa avsnitt går vi igenom ett verkligt exempel för att demonstrera var och en av de ovan nämnda stegen.

Installation och konfiguration

I det här avsnittet går vi igenom installationen och konfigurationen av Swift Mailer-biblioteket. Installationen är ganska enkel, eftersom den redan är tillgänglig som ett kompositörspaket. Innan vi fortsätter, se till att du har installerat Kompositör eftersom vi behöver det för att installera Swift Mailer-biblioteket.

När du har installerat Kompositör, fortsätt och ta tag i Swift Mailer-biblioteket med följande kommando.

$ komponent kräver "swiftmailer / swiftmailer: ^ 6,0"

Med detta bör Swift Mailer-biblioteket installeras, tillsammans med nödvändiga beroenden i Säljare katalogen. Och innehållet i den nyskapade composer.json ska se så här ut:

"kräver": "swiftmailer / swiftmailer": "^ 6.0"

Så det är installationsdelen, men hur ska du använda den? Faktum är att det bara handlar om att inkludera autoload.php fil skapad av kompositören i din ansökan, som visas i följande kod.

Så här skickar du e-postmeddelanden

I det föregående avsnittet undersökte vi hur du installerar Swift Mailer-biblioteket med Composer. I det här avsnittet börjar vi implementera ett verkligt exempel.

Gå vidare och skapa email.php fil med följande innehåll.

setUsername ('xxxxxxxx') -> setPassword ('xxxxxxxx'); // Skapa Mailer med din skapade Transport $ mailer = ny Swift_Mailer ($ transport); // Skapa ett meddelande $ message = new Swift_Message (); // Ange ett "ämne" $ meddelande-> setSubject ('Demo-meddelande med SwiftMailer-biblioteket.'); // Ange "Från adress" $ message-> setFrom (['avsä[email protected]' => 'avsändarnamn']); // Ange "Att adressera" [Använd setTo-metod för flera mottagare, argumentet ska vara array] $ message-> addTo ([email protected] "," mottagarnamn "); // Lägg till "CC" -adress [Använd setCc-metod för flera mottagare, argumentet ska vara array] $ message-> addCc ([email protected] "," mottagarnamn "); // Lägg till "BCC" -adress [Använd setBcc-metoden för flera mottagare, argumentet ska vara array] $ message-> addBcc ([email protected] "," mottagarens namn "); // Lägg till en "Attachment" (Den dynamiska data kan också bifogas) $ attachment = Swift_Attachment :: fromPath ('example.xls'); $ Attachment-> setFilename (Report.xls '); $ Meddelande-> bifoga ($ bilaga); // Lägg till inline "Bild" $ inline_attachment = Swift_Image :: fromPath ('nature.jpg'); $ cid = $ message-> bädda in ($ inline_attachment); // Ange vanlig text "Body" $ message-> setBody ("Detta är meddelandets vanliga textkropp. \ NThanks, \ nAdmin"); // Ange ett "Body" $ message-> addPart ('Det här är HTML-versionen av meddelandet.
Exempel på inline-bild:

Tack,
Admin ',' text / html '); // Skicka meddelandet $ result = $ mailer-> send ($ message); fångst (Undantag $ e) echo $ e-> getMessage ();

Låt oss gå igenom hur denna kod fungerar.

Initiera Swift Mailer

Swift Mailer-biblioteket stöder olika transporter som SMTP och Sendmail när du skickar ett mail. Så det första du behöver göra är att initialisera transport objekt.

I ovanstående exempel har jag använt SMTP-transporten för att skicka e-postmeddelanden.

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

Självklart, om du vill använda Sendmail-protokollet måste du initiera motsvarande Swift_SendmailTransport objekt.

// Skapa SendMail Transport $ transport = nya Swift_SendmailTransport ('/ usr / sbin / sendmail -bs');

När transporten är skapad måste vi initiera ett mailerobjekt och skicka den transport som vi redan har skapat.

// Skapa Mailer med din skapade Transport $ mailer = ny Swift_Mailer ($ transport);

Skapa ett meddelande

Efter att ha skapat transport- och postarobjekten är det enda som återstår att inställa Swift_Message objekt och dekorera det med de nödvändiga egenskaperna.

// Skapa ett meddelande $ message = new Swift_Message ();

Nu ska vi använda $ message anstränga sig för att förbereda innehållet i vårt meddelande. Till att börja med, setSubject Metoden låter dig ställa in ämnet för e-postmeddelandet.

// Ange ett "ämne" $ meddelande-> setSubject ('Demo-meddelande med SwiftMailer-biblioteket.');

De setFrom Metoden används för att ställa in "Från" -adressen till e-postmeddelandet.

// Ange "Från adress" $ message-> setFrom (['[email protected]' => 'Avsändarens namn']);

Förflyttning framåt, låt oss ange e-postadressen "Till". Faktum är att det finns ett par variationer för att ställa in mottagarna av e-postmeddelandet. Om du vill ställa in en enda mottagare kan du använda Lägg till metod och satt till Metoden å andra sidan används för att ställa in flera mottagare.

// Ange "Att adressera" [Använd setTo-metod för flera mottagare, argumentet ska vara array] $ message-> addTo ([email protected] "," mottagarnamn ");

De addCc och addBcc Metoder används för att ställa in respektive respektive e-postadressens CC- och BCC-adresser.

// Lägg till "CC" -adress [Använd setCc-metod för flera mottagare, argumentet ska vara array] $ message-> addCc ([email protected] "," mottagarnamn "); // Lägg till "BCC" -adress [Använd setBcc-metoden för flera mottagare, argumentet ska vara array] $ message-> addBcc ([email protected] "," mottagarens namn ");

Bifoga filer

Låt oss nu se hur du kan bifoga en fil till ett e-postmeddelande. 

Du måste först instansera Swift_Attachment objekt med ett giltigt filnamn När du har skapat bifogningsobjektet kan du lägga till det i e-postmeddelandet med fästa metod. Du kan också använda setFilename metod om du vill ändra filnamnet som kommer att visas i meddelandefilerna.

// Lägg till en "Attachment" (Den dynamiska data kan också bifogas) $ attachment = Swift_Attachment :: fromPath ('example.xls'); $ Attachment-> setFilename (Report.xls '); $ Meddelande-> bifoga ($ bilaga);

Tillsammans med vanliga bifogade filer, ibland vill du bädda in bilder i meddelandetexten. Du kan göra det genom att använda bädda in metod, som visas i följande kod. De bädda in Metoden returnerar det unika ID-numret för det inbäddade objektet, vilket du senare kan använda i meddelandet medan du refererar till bilden via src fast egendom.

// Lägg till inline "Bild" $ inline_attachment = Swift_Image :: fromPath ('nature.jpg'); $ cid = $ message-> bädda in ($ inline_attachment);

Meddelandeorganet

Låt oss sedan ange e-postkroppen med hjälp av setBody metod.

// Ange vanlig text "Body" $ message-> setBody ("Detta är meddelandets vanliga textkropp. \ NThanks, \ nAdmin");

Om du vill ange HTML-versionen av meddelandet kan du använda addPart metod, som visas i följande kod. Som du kan se använder vi $ cid för att hänvisa till bilden vi tidigare inbäddade.

// Ange ett "Body" $ message-> addPart ('Det här är HTML-versionen av meddelandet.
Exempel på inline-bild:

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

Skicka meddelandet!

Slutligen använder vi skicka Metod för Mailer-objektet att skicka e-postmeddelandet.

// Skicka meddelandet $ result = $ mailer-> send ($ message);

Prova att köra skriptet, och du borde få ett mail! Låt mig veta i kommentarsektionen om du möter några problem.

Slutsats

Idag tittade vi på ett av de mest populära PHP-biblioteken för att skicka e-postmeddelanden: Swift Mailer. Med det här biblioteket kan du enkelt skicka e-postmeddelanden från dina PHP-skript.

Skicka gärna dina tankar och frågor genom att använda formuläret nedan.