Skicka e-post med Gmail SMTP-server och Swift Mailer-biblioteket
Vill du skicka dina e-postmeddelanden med Gmail SMTP-server? När du använder SMTP-servern för dina e-postmeddelanden är det stor chans att dina e-postmeddelanden går till användarens inkorg och inte till skräppost. SMTP-servern förhindrar att dina e-postmeddelanden markeras som skräppost. I den här artikeln studerar vi hur man skickar e-post med Gmail SMTP-server och Swift Mailer-biblioteket.
Som webbplatsägare vill du alltid att din e-post ska gå direkt in i användarens inkorg och inte i skräppost eller skräp. Det ökar sannolikheten för att användaren läser din e-post och vidtar den åtgärd du önskar.
Varför behöver du använda SMTP-server?
För en webbplats är det normalt att ha ett formulär som skickar ett e-postmeddelande till användare eller administratörer. Det kan vara ditt nyhetsbrev, kontaktformulär eller registreringsprocess där du behöver skicka e-post som ett bekräftelse.
PHP tillhandahåller en mail()
funktion för att skicka e-post. Men om din server inte konfigurerar e-postinställningar korrekt fungerar den här metoden inte. En annan möjlighet är att när du skickar e-postmeddelanden med mail()
metoden kan det hamna i skräppost.
För att övervinna dessa två situationer bör du använda SMTP-servern för att skicka e-post.
Med hjälp av Swift Mailer- biblioteket kan användaren använda vilken SMTP-server som helst som Gmail, Sendgrid, Mandrill eller din egen värdlevererade SMTP-server för att skicka e-postmeddelanden. I den här handledningen väljer jag en Gmail SMTP-server.
Med detta sagt, låt oss ta en titt på hur du använder Swift Mailer-biblioteket för att skicka e-post.
Installation av Swift Mailer
För att kunna använda Swift Mailer-biblioteket bör du ha PHP version 7.2 eller högre på din server. Om du använder den äldre versionen uppgraderar du den till den senaste PHP-versionen. De flesta webbhotell som Bluehost uppgraderar PHP-versionen på begäran. Du behöver inte investera din tid för att uppdatera versionen.
Framåt rekommenderar jag att du använder Composer för att installera Swift Mailer-biblioteket. Öppna terminalen i din projektkatalog och kör kommandot:
composer require swiftmailer/swiftmailer
Eftersom vi ska använda Gmail SMTP måste du ändra vissa inställningar på ditt Google-konto. Logga in på ditt Google-konto och klicka på Konto. När du är på sidan Google-konto klickar du på Säkerhet. Rulla ner till botten så hittar du inställningarna för ‘Mindre säker appåtkomst’. Ställ den på PÅ.
Skicka e-post med Gmail SMTP-server och Swift Mailer-biblioteket
I detta skede är du redo med Swift Mailer-biblioteket och du ändrade också Gmail-kontoinställningarna. Nu är du bra att gå vidare.
Låt oss säga att du har en fil sendmail.php
där du behöver skriva en kod som skickar e-post. Skriv koden nedan i din PHP-fil.
sendmail.php
<?php
require_once 'vendor/autoload.php';
try {
// Create the Transport
$transport = (new Swift_SmtpTransport('smtp.googlemail.com', 465, 'ssl'))
->setUsername('YOUR_GMAIL_USERNAME')
->setPassword('YOUR_GMAIL_PASSWORD')
;
// Create the Mailer using your created Transport
$mailer = new Swift_Mailer($transport);
// Create a message
$body = 'Hello, <p>Email sent through <span style="color:red;">Swift Mailer</span>.</p>';
$message = (new Swift_Message('Email Through Swift Mailer'))
->setFrom(['FROM_EMAIL_ADDRESS' => 'FROM_NAME'])
->setTo(['RECEPIENT_1_EMAIL_ADDRESS'])
->setCc(['RECEPIENT_2_EMAIL_ADDRESS'])
->setBcc(['RECEPIENT_3_EMAIL_ADDRESS'])
->setBody($body)
->setContentType('text/html')
;
// Send the message
$mailer->send($message);
echo 'Email has been sent.';
} catch(Exception $e) {
echo $e->getMessage();
}
I ovanstående kod har jag skickat nedanstående värden för Gmail SMTP-serverinställningar.
- Googles SMTP-serveradress: smtp.googlemail.com
- Gmail SMTP-port: 465
- Kryptering: ssl
Förutom dessa värden måste du ändra andra platshållare som YOUR_GMAIL_USERNAME, YOUR_GMAIL_PASSWORD, etc.
När du har ersatt alla värden, kör den här filen i en webbläsare. Du bör få e-postmeddelandet i inkorgen, inte i skräpposten.
Skicka enstaka eller flera bilagor i ett e-postmeddelande
Ibland kan du behöva skicka bilagor i ett e-postmeddelande. Med Swift Mailer kan du skicka enstaka eller flera bilagor enligt följande:
$message->attach(Swift_Attachment::fromPath(__DIR__. '/sample.png')); //absolute path for your attachment
$message->attach(Swift_Attachment::fromPath(__DIR__. '/sample-ebook.pdf'));
Allt du behöver göra är att använda attach
metoden och skicka den absoluta sökvägen för filen du behöver skicka som en bilaga. Här antar jag att du måste skicka ‘sample.png’ och ‘sample-ebook.pdf’ som bilagor.
Så vår slutliga kod är som följer.
sendmail.php
<?php
require_once 'vendor/autoload.php';
try {
// Create the Transport
$transport = (new Swift_SmtpTransport('smtp.googlemail.com', 465, 'ssl'))
->setUsername('YOUR_GMAIL_USERNAME')
->setPassword('YOUR_GMAIL_PASSWORD')
;
// Create the Mailer using your created Transport
$mailer = new Swift_Mailer($transport);
// Create a message
$body = 'Hello, <p>Email sent through <span style="color:red;">Swift Mailer</span>.</p>';
$message = (new Swift_Message('Email Through Swift Mailer'))
->setFrom(['FROM_EMAIL_ADDRESS' => 'FROM_NAME'])
->setTo(['RECEPIENT_1_EMAIL_ADDRESS'])
->setCc(['RECEPIENT_2_EMAIL_ADDRESS'])
->setBcc(['RECEPIENT_3_EMAIL_ADDRESS'])
->setBody($body)
->setContentType('text/html')
->attach(Swift_Attachment::fromPath(__DIR__. '/sample.png'))
->attach(Swift_Attachment::fromPath(__DIR__. '/sample-ebook.pdf'))
;
// Send the message
$mailer->send($message);
echo 'Email has been sent.';
} catch(Exception $e) {
echo $e->getMessage();
}
Det handlar om att skicka e-post via Swift Mailer-biblioteket. Du kan också använda Symfony Swift Mailer för att skicka meddelanden via några SMTP-servrar som Mailgun, Mandrill, etc. Jag skulle vilja höra dina tankar och förslag i kommentarsektionen nedan.
relaterade artiklar
- Skicka e-post med Gmail SMTP-server från PHP-skript
- Hur du skickar WordPress-e-post med SMTP-server
- Skicka e-post via Gmail SMTP-server i Laravel