Skicka e-post med Gmail SMTP-server från PHP-skript
E-post spelar en viktig roll på webbplatsen. Varje webbplats behöver vanligtvis skicka e-post till användare. Dessa e-postmeddelanden kan skickas från kontaktsidan, nyhetsbrevet, registreringsformuläret etc.
PHP tillhandahåller en mail()
funktion som används för att skicka ett e-postmeddelande. Men det finns begränsningar när du använder mail()
metoden. Du kan inte skicka e-post från en lokal utvecklingsserver. En annan nackdel är att det finns stor risk för att din e-post hamnar i skräppost.
I de flesta fall mail()
skickar metoden till och med inte ett mejl. Detta kan bero på fel serverkonfiguration eller något annat.
För att komma ur dessa problem eller begränsningar kan man använda SMTP-servern för att skicka e-postmeddelanden.
I den här artikeln studerar vi hur man använder PHPMailer och Gmail SMTP-server för att skicka e-post.
Installation
Du måste först installera PHPMailer- biblioteket i ditt projekt. Rekommenderat sätt att installera ett bibliotek är via Composer.
Öppna kommandotolken i din projektkatalog och kör kommandot nedan.
composer require phpmailer/phpmailer
Eftersom vi använder Gmail SMTP måste du ändra vissa inställningar på ditt Google-konto. Logga in på ditt Google-konto och klicka på Mitt konto. När du är på sidan Mitt 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Å.
Efter detta måste vi skriva en kod som skickar ett e-postmeddelande med hjälp av PHPMailer-biblioteket och Gmail SMTP-servern.
PHP-skript för att skicka e-post med Gmail SMTP-server
Öppna din PHP-fil där du behöver skriva en kod för e-post. Jag antar till exempel att du har en sendemail.php
fil i rotkatalogen.
sendemail.php
<?php
//Import PHPMailer classes into the global namespace
use PHPMailerPHPMailerPHPMailer;
use PHPMailerPHPMailerException;
require_once 'vendor/autoload.php';
$mail = new PHPMailer(true);
?>
I ovanstående kod har jag inkluderat miljön i PHPMailer-biblioteket i PHP-filen.
För att skicka e-postmeddelanden med PHPMailer måste användaren sedan skicka Gmail SMTP-serveradress, SMTP-port för Gmail och SMTP-autentisering (vilket inte är ditt användarnamn och lösenord för ett Google-konto).
$mail->isSMTP();
$mail->Host = 'smtp.googlemail.com'; //gmail SMTP server
$mail->SMTPAuth = true;
$mail->Username = 'GMAIL_USERNAME'; //username
$mail->Password = 'GMAIL_PASSWORD'; //password
$mail->SMTPSecure = 'ssl';
$mail->Port = 465; //SMTP port
Det är allt! Du är klar med konfigurationen. Nu är det bra att fortsätta med att skicka ett e-postmeddelande till en användare.
$mail->setFrom('FROM_EMAIL_ADDRESS', 'FROM_NAME');
$mail->addAddress('RECEPIENT_EMAIL_ADDRESS', 'RECEPIENT_NAME');
$mail->isHTML(true);
$mail->Subject = 'Email subject';
$mail->Body = '<b>Email Body</b>';
$mail->send();
echo 'Message has been sent';
Ersätt platshållarna med faktiska värden. Kör den här filen i en webbläsare och din e-post ska skickas till mottagarens e-postadress.
Skicka bilagor i ett e-postmeddelande
Med hjälp av PHPMailer-biblioteket kan man skicka enstaka eller flera bilagor i ett e-postmeddelande. Allt du behöver göra är att skicka en katalogsökväg till dina bilagor till metoden addAttachment
enligt följande.
$mail->addAttachment(__DIR__. '/attachment1.png');
$mail->addAttachment(__DIR__. '/attachment2.jpg');
Vår slutliga kod är som följer.
sendemail.php
<?php
use PHPMailerPHPMailerPHPMailer;
use PHPMailerPHPMailerException;
require_once "vendor/autoload.php";
require_once "constants.php";
$mail = new PHPMailer(true);
try {
$mail->isSMTP();
$mail->Host = 'smtp.googlemail.com'; //gmail SMTP server
$mail->SMTPAuth = true;
$mail->Username = GMAIL_USERNAME; //username
$mail->Password = GMAIL_PASSWORD; //password
$mail->SMTPSecure = 'ssl';
$mail->Port = 465; //smtp port
$mail->setFrom('FROM_EMAIL_ADDRESS', 'FROM_NAME');
$mail->addAddress('RECEPIENT_EMAIL_ADDRESS', 'RECEPIENT_NAME');
$mail->addAttachment(__DIR__. '/attachment1.png');
$mail->addAttachment(__DIR__. '/attachment2.png');
$mail->isHTML(true);
$mail->Subject = 'Email Subject';
$mail->Body = '<b>Email Body</b>';
$mail->send();
echo 'Message has been sent';
} catch (Exception $e) {
echo 'Message could not be sent. Mailer Error: '. $mail->ErrorInfo;
}
?>
Jag hoppas att du förstår hur du skickar e-post med Gmail SMTP-server från ett PHP-skript. Dela dina tankar och förslag i en kommentar nedan.
relaterade artiklar
- Skicka e-post via Gmail SMTP-server i Laravel
- Skicka e-post med hjälp av Gmail SMTP-server och Swift Mailer-bibliotek
- Skicka e-post med Mailjet i PHP