Kuinka lähettää sähköposteja PHPMailerilla
PHPMailer on ohjelmakirjasto, joka hoitaa sähköpostin lähettämisen PHP:n kautta. PHPMaileria käytetään pääasiassa verkkosivustojen yhteydenottolomakkeissa, mutta sitä voidaan käyttää myös yksityisten sähköpostiviestien lähettämiseen.
Mikä on PHPMailer?
PHPMailer on PHP:lle tarkoitettu sähköpostilaajennus, jota kehittää ja ylläpitää PHP-yhteisö. PHPMailerilla lähetetyt sähköpostit päätyvät harvemmin roskapostikansioon kuin PHP:n sisäänrakennetulla postitoiminnolla lähetetyt. Tämä johtuu siitä, että PHPMailerilla kirjoitetut sähköpostit lähetetään SMTP:n kautta. SMTP tarkoittaa Simple Mail Transfer Protocolia, ja sitä käytetään sähköpostien siirtämiseen internetissä. Lisäksi PHPMailer tukee myös HTML-sähköposteja ja liitteitä, toisin kuin sisäänrakennettu postitoiminto.
Mihin PHPMaileria käytetään?
PHPMailerin käyttö on hieman työläämpää verrattuna muihin sähköpostipalveluihin tai tietokoneeseen asennettuihin sähköpostiohjelmiin, minkä vuoksi saatat ihmetellä, miksi ihmiset valitsevat juuri sen. PHP-kehys helpottaa automaattisten vastausten luomista, kuten verkkokaupassa tarvittavia vastauksia. Lisäksi PHPMailer sopii hyvin verkkosivustojen yhteydenottolomakkeisiin.
Mitkä ovat PHPMailerin vaatimukset?
PHPMailerin käyttämiseen tarvitaan SMTP-palvelin. Voit valita, käytätkö palveluntarjoajan sähköpostipalvelinta vai asennatko oman palvelimen. PHP-laajennuksen asentamiseen on suositeltavaa käyttää Composer-työkalua (PHP:n pakettienhallintaohjelmaa).
PHP:n perusteiden hallitseminen on toinen tärkeä edellytys PHPMailerin käytölle. Aloittelijoille suunnattu PHP-oppaamme auttaa sinua, jos sinulla on vaikeuksia PHP:n perusteiden kanssa.
PHPMailerin asennus vaihe vaiheelta
Vaihe 1: Lataa PHPMailerin uusin versio
Lataa PHPMailerin uusin versio. Voit tehdä tämän Composerin avulla tai manuaalisesti GitHubista.
Vaihtoehto 1: Lataa Composerin avulla
Jos olet asentanut Composer-paketinhallintaohjelman, voit käyttää seuraavaa komentoa:
composer require phpmailer/phpmailerbashTärkeää: jos olet asentanut PHPMailerin Composerin avulla, sinun on sisällytettävä Composer PHP-koodiisi, jotta voit lähettää sähköposteja.
Seuraavaa koodiriviä voidaan käyttää:
require_once "vendor/autoload.php";bashAvainsana**”require_once”**varmistaa, että Composer ladataan vain kerran. Muussa tapauksessa saatat kohdata ohjelmointivirheitä. Asennus Composerin avulla on nyt valmis.
Vaihtoehto 2: Lataa suoraan GitHubista
PHPMailerin lähdekooditiedostot voi ladata myös manuaalisesti napsauttamalla vastaavan GitHub-arkiston Code-painiketta ja lataamalla ZIP-tiedoston. Jos järjestelmääsi on asennettu Git, voit vaihtoehtoisesti kloonata arkiston komentorivikomennolla.
Vaihe 2: Pura tiedostot
Jos olet ladannut PHPMailerin lähdekoodin manuaalisesti, sinun on avattava ZIP-tiedostot. Valitse sijainti, johon haluat asentaa PHPMailerin, ja lisää PHPMailer skriptiisi. Olettaen, että olet purkanut PHPMailer-tiedostot kansioon nimeltä PHPMailer, voit käyttää seuraavia koodirivejä:
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);phpKuinka lähettää sähköposteja PHPMailerilla vaihe vaiheelta
Vaihe 1: Lisää nimitilat
Varmista, että nimitilat ovat oikein, jotta PHPMailer-kirjastoa voidaan käyttää. Tätä varten tarvitaan Use komentoa, joten koodissasi tulisi olla seuraavat rivit:
<?php
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\SMTP;
use PHPMailer\PHPMailer\Exception;phpVoit avata yksittäiset luokat lisäämällä niiden nimet viimeisen kauttaviivan jälkeen.
Vaihe 2: Virheiden havaitseminen
Vaikka PHPMailer on erittäin luotettava tapa lähettää sähköposteja, virheitä voi silti esiintyä ajoittain. Lisäämällä try-catch-lause sähköpostin lähetysprosessiin voit estää sen, että postipalvelimesi arkaluontoiset tiedot lähetetään käyttäjille virheilmoituksena:
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();
}phpVaihe 3: Kirjaudu sisään SMTP:n kautta
Jotta voit käyttää PHPMaileria, sinun on tunnistaututtava SMTP:n kautta. Kirjoita sähköpostipalvelimesi osoite kyseisen protokollan (joko TLS/SSL tai SMTP) viereen ja lisää porttinumero sekä käyttäjätunnuksesi ja salasanasi. Käyttämäsi protokolla ja portti riippuvat sähköpostipalveluntarjoajastasi. Tarvittavat palvelintiedot löydät sähköpostipalveluntarjoajan verkkosivuilta.
$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;phpSalausmenetelmänä voi käyttää ENCRYPTION_STARTTLS sijaan myös ENCRYPTION_SMTPS. Asetuksella ENCRYPTION_SMTPS yhteys muodostetaan vain, jos TLS on käytössä. Tämä tarkoittaa, että yhteydenpito palvelimen kanssa on mahdollista vain, jos palvelin tukee turvallisen tiedonsiirron edellyttämiä salausmenetelmiä. Asetuksella StartTLS yhteys postipalvelimeen muodostetaan ilman salausta. Salaus otetaan käyttöön vasta myöhemmin. Jos TLS-salausta ei voida käyttää, jäljellä oleva tiedonsiirto tapahtuu salaamattomana.
SMTPS tarjoaa paremman tietoturvan, kun taas StartTLSon yhteensopivampi. Yhteensopivuutensa vuoksi StartTLS on yleensä suositeltavin vaihtoehto.
Vaihe 4: Ilmoita sähköpostin vastaanottaja
Nyt voit määrittää sähköpostiviestisi vastaanottajat skriptissä.
// 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');phpVaihe 5: Lisää sähköpostin sisältö
Älä unohda sähköpostiviestisi sisältöä. Se koostuu yleensä otsikosta ja tekstistä, jotka voidaan määrittää sekä HTML- että ei-HTML-versioina. On tärkeää huomata, että vanhemmat ohjelmistot eivät välttämättä tue nykyistä HTML5-standardia, joten voi olla hyvä idea laatia sähköpostiviestisi HTML-muodossa.
Voit myös lähettää liitetiedostoja helposti PHPMailerin avulla addAttachment-funktiota käyttämällä. PHPMailerilla voi lähettää myös kuvia, musiikkia, asiakirjoja, videoita ja GIF-tiedostoja. Voit myös nimetä liitetiedostosi uudelleen valinnaisella toisella parametrilla, joka välitetään funktiolle.
$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");phpVaihe 6: Käytä oikeaa merkistöä
On suositeltavaa ottaa UTF-8 käyttöön PHPMailerissa, jotta vältetään näyttövirheet käsiteltäessä muiden kielten aksenttimerkkejä sisältäviä kirjaimia, etenkin kun käytetään liitetiedostoja. Voit tehdä tämän lisäämällä seuraavat koodirivit PHP-skriptiisi:
$mail->CharSet = 'UTF-8';
$mail->Encoding = 'base64';phpVaihe 7: Lähetä sähköposti
Nyt on aika lähettää sähköpostiviestisi. Tee se seuraavalla komennolla:
$mail->send();phpOn suositeltavaa sijoittaa kaikki lähetyspyynnössä näkyvä koodi skriptisi try-lauseen lohkoon, jotta voit havaita mahdolliset virheet.
Koodiesimerkki sähköpostin lähettämisestä PHPMailerilla
Alla on kaikki tarvittava koodi, jolla voit lähettää sähköpostiviestin, jossa on kuvaliite, valitsemallesi vastaanottajalle PHPMailerin avulla:
<?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