Hur man skickar e-postmeddelanden med PHPMailer
PHPMailer är ett programbibliotek som reglerar e-postöverföring via PHP. PHPMailer används främst för kontaktformulär på webbplatser, men kan också användas för att skicka privata e-postmeddelanden.
Vad är PHPMailer?
PHPMailer är ett e-posttillägg för PHP som utvecklas och underhålls av PHP-communityn. E-postmeddelanden som skickas med PHPMailer hamnar mindre ofta i skräppostmappen än de som skickas med den inbyggda e-postfunktionen i PHP. Detta beror på att e-postmeddelanden som skrivs med PHPMailer skickas med SMTP. SMTP står för Simple Mail Transfer Protocol och används för att överföra e-postmeddelanden över internet. Dessutom stöder PHPMailer även HTML-e-postmeddelanden och bilagor, till skillnad från den inbyggda e-postfunktionen.
Vad används PHPMailer till?
PHPMailer är lite mer omständligt att använda jämfört med andra e-postleverantörer eller integrerade e-postprogram på din dator, vilket kan få dig att undra varför folk väljer att använda det. PHP-ramverket förenklar skapandet av automatiska svar, till exempel sådana som behövs för en webbutik. Dessutom är PHPMailer också lämpligt för kontaktformulär på webbplatser.
Vilka är kraven för PHPMailer?
Du behöver en SMTP-server för att kunna använda PHPMailer. Det är upp till dig om du vill använda en e-postserver från en leverantör eller konfigurera din egen server. Det är bäst att använda Composer (en pakethanterare för PHP) för att installera PHP-tillägget.
Att behärska grunderna i PHP är ett annat viktigt krav för att kunna använda PHPMailer. Vår PHP-handledning för nybörjare kan hjälpa dig om du har problem med grunderna i PHP.
Hur man installerar PHPMailer steg för steg
Steg 1: Ladda ner den aktuella versionen av PHPMailer
Ladda ner den senaste versionen av PHPMailer. Du kan göra detta med Composer eller manuellt från GitHub.
Alternativ 1: Ladda ner med Composer
Om du har installerat pakethanteraren Composer kan du helt enkelt använda följande kommando:
composer require phpmailer/phpmailerbashViktigt: om du har installerat PHPMailer med Composer måste du inkludera Composer i din PHP-kod för att kunna skicka e-post.
Följande kodrad kan användas:
require_once "vendor/autoload.php";bashNyckelordet**“require_once”**säkerställer att Composer endast inkluderas en gång. Annars kan programfel uppstå. Installationen med Composer är nu klar.
Alternativ 2: Ladda ner direkt från GitHub
PHPMailer-källfilerna kan också laddas ner manuellt genom att klicka på knappen Code i motsvarande GitHub-arkiv och ladda ner ZIP-filen. Om Git är installerat på ditt system kan du alternativt klona arkivet med hjälp av ett kommandoradsbefall.
Steg 2: Packa upp filerna
Om du har laddat ner PHPMailers källkod manuellt måste du öppna ZIP-filerna. Välj den plats där du vill installera PHPMailer och inkludera PHPMailer i ditt skript. Om du har packat upp PHPMailer-filerna i en mapp som heter PHPMailer kan du använda följande kodrader:
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;
/*Class for handling exceptions and errors*/
require 'C:/PHPMailer/src/Exception.php';
/*PHPMailer class*/
require 'C:/PHPMailer/src/PHPMailer.php';
/*SMTP class needed to connect to an SMTP server*/.
require 'C:/PHPMailer/src/SMTP.php';
/*When creating a PHPMailer object, pass the parameter ‘true’ to activate exceptions (messages in the event of an error)*/
$email = new PHPMailer(true);phpHur man skickar e-postmeddelanden med PHPMailer steg för steg
Steg 1: Inkludera namnutrymmen
Se till att namnutrymmena är korrekta för att kunna komma åt PHPMailer. Det krävs Use satser för detta, så din kod bör innehålla följande rader:
<?php
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\SMTP;
use PHPMailer\PHPMailer\Exception;phpDu kan komma åt de enskilda klasserna genom att ange namnen efter den sista snedstrecken.
Steg 2: Fånga upp fel
PHPMailer är ett mycket tillförlitligt sätt att skicka e-post, men ibland kan fel uppstå. Genom att inkludera ett try catch-uttryck i e-postutskicket förhindrar du att känslig information på din e-postserver skickas till användarna som ett felmeddelande:
try {
// Try to create a new instance of PHPMailer class, where exceptions are enabled
$mail = new PHPMailer (true);
// (...)
} catch (Exception $e) {
echo "Mailer Error: ".$e->getMessage();
}phpSteg 3: Autentisera med SMTP
Du måste autentisera dig med SMTP för att kunna använda PHPMailer. Ange adressen till din e-postserver bredvid lämpligt protokoll (antingen TLS/SSL eller SMTP) och ange porten tillsammans med ditt användarnamn och lösenord. Vilket protokoll och vilken port du använder beror på din e-postleverantör. Respektive serverdata kan hämtas från e-postleverantörens webbplats.
$mail->isSMTP();
$mail->SMTPAuth = true;
// Personal data
$mail->host = "smtp.domain.com";
$mail->Port = 587;
$mail->username = "name.surname@domain.com";
$mail->password = "testpassword4321";
$mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS;phpI stället för ENCRYPTION_STARTTLS kan du också använda ENCRYPTION_SMTPS som krypteringsmetod. Med ENCRYPTION_SMTPS upprättas en anslutning endast om TLS TLS är aktivt. Detta innebär att kommunikation med en server endast är möjlig om servern stöder de krypteringsåtgärder som krävs för säker överföring. Med StartTLS upprättas anslutningen till e-postservern utan kryptering. Först därefter tillämpas kryptering. Om det inte är möjligt att tillämpa TLS-kryptering kommer den återstående datautbytet att ske okrypterat.
SMTPS erbjuder en högre säkerhetsnivå, medan StartTLShar bättre kompatibilitet. På grund av sin kompatibilitet är StartTLS i allmänhet det föredragna valet.
Steg 4: Ange mottagaren av e-postmeddelandet
Nu kan du ange mottagarna av ditt e-postmeddelande i skriptet.
// Sender
$mail->setFrom('info@example.com', 'name');
// Recipient, the name can also be stated
$mail->addAddress('info@example.com', 'name');
// Copy
$mail->addCC('info@example.com');
// Blind copy
$mail->addBCC('info@example.com', 'name');phpSteg 5: Lägg till innehållet i e-postmeddelandet
Glöm inte innehållet i ditt e-postmeddelande. Det består vanligtvis av ett ämne och en text, som kan anges som både HTML- och icke-HTML-versioner. Det är viktigt att notera att äldre programvara kanske inte kan hantera den aktuella HTML5-standarden, så det kan vara en bra idé att skapa ditt e-postmeddelande med HTML.
Du kan också enkelt skicka bilagor med PHPMailer med hjälp av funktionen addAttachment. Bilder, musik, dokument, videor och GIF-filer kan också skickas med PHPMailer. Du kan också byta namn på dina bilagor med en valfri andra parameter som överförs till funktionen.
$mail->isHTML(true);
// Subject
$mail->Subject = 'The subject of your mail';
// HTML content
$mail->Body = 'The mail text as HTML content. <b>bold</b> elements are allowed.';
$mail->AltBody = 'The text as a simple text element';
// Add attachment
$mail-> addAttachment("/home/user/Desktop/sampleimage.png", "sampleimage.png");phpSteg 6: Använd rätt teckenkodning
Det är en bra idé att aktivera UTF-8 i PHPMailer för att förhindra att visningsfel uppstår vid bearbetning av bokstäver med accent från andra språk, särskilt när du använder olika bilagor. Du kan göra detta genom att lägga till följande kodrader i ditt PHP-skript:
$mail->CharSet = 'UTF-8';
$mail->Encoding = 'base64';phpSteg 7: Skicka e-post
Nu är det dags att skicka din e-post. Använd följande kommando för att göra detta:
$mail->send();phpDet är bäst att placera all kod som visas i sändningsbegäran i try-satsblocket i ditt skript så att du kan fånga upp eventuella fel.
Kodexempel för att skicka ett e-postmeddelande med PHPMailer
Nedan finns all kod du behöver för att skicka ett e-postmeddelande med en bildbilaga till en mottagare som du väljer med hjälp av PHPMailer:
<?php
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\SMTP;
use PHPMailer\PHPMailer\Exception;
require_once "vendor/autoload.php";
// Enable or disable exceptions via variable
$debug = true;
try {
// Create instance of PHPMailer class
$mail = new PHPMailer($debug);
if ($debug) {
// issue a detailed log
$mail->SMTPDebug = SMTP::DEBUG_SERVER;
}
// Authentication with SMTP
$mail-> isSMTP();
$mail->SMTPAuth = true;
// Login
$mail->Host = "smtp.domain.com";
$mail->Port = 587;
$mail->Username = "name.surname@domain.com";
$mail->Password = "testpassword4321";
$mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS;
$mail->setFrom('info@example.com', 'name');
$mail->addAddress('info@example.com', 'name');
$mail-> addAttachment("/home/user/Desktop/sampleimage.png", "sampleimage.png");
$mail->CharSet = 'UTF-8';
$mail->Encoding = 'base64';
$mail->isHTML(true);
$mail->Subject = 'The subject of your mail';
$mail->Body = 'The mail text in HTML content. <b>bold</b> elements are allowed.';
$mail->AltBody = 'The text as a simple text element';
$mail->send();
} catch (Exception $e) {
echo "Message could not be sent. Mailer Error: ".$e->getMessage();
}php