E-kirja saatmine Gmaili SMTP-serveri abil PHP-skriptist
E-postil on veebisaidil oluline roll. Igal veebisaidil tuleb tavaliselt saata kasutajatele e-kirju. Neid e-kirju saab saata kontaktide lehelt, infolehelt, registreerimisvormilt jne.
PHP pakub mail()
funktsiooni, mida kasutatakse meili saatmiseks. Kuid mail()
meetodi kasutamisel on piiranguid. Te ei saa meili saata kohalikust arendusserverist. Teine puudus on see, et on suur võimalus, et teie e-kirjad jõuavad rämpspostiks.
Enamasti mail()
ei saada meetod isegi meili. Selle põhjuseks võib olla vale serveri konfiguratsioon või midagi muud.
Nendest probleemidest või piirangutest vabanemiseks võib e-kirjade saatmiseks kasutada SMTP-serverit.
Selles artiklis uurime, kuidas kasutada PHPMailerit ja Gmaili SMTP-serverit meilide saatmiseks.
Paigaldamine
Kõigepealt peate oma projekti installima PHPMaileri teegi. Teegi installimiseks on soovitatav viis helilooja kaudu .
Avage projekti juurkataloogis käsuviip ja käivitage järgmine käsk.
composer require phpmailer/phpmailer
Kuna kasutame Gmaili SMTP-d, peate oma Google’i kontol muutma mõnda seadet. Logige sisse oma Google’i kontole ja klõpsake nuppu Minu konto. Kui olete lehel Minu konto, klõpsake nuppu Turvalisus. Kerige allapoole ja leiate seaded „Vähem turvalise rakenduse juurdepääs". Lülitage see olekusse SEES.
Pärast seda peame kirjutama koodi, mis saadab meili PHPMaileri teegi ja Gmaili SMTP-serveri abil.
PHP-skript meilisõnumite saatmiseks Gmaili SMTP-serveri abil
Avage oma PHP-fail, kuhu peate kirjutama e-kirjade koodi. Näiteks eeldan, et teil on sendemail.php
juurkataloogis fail.
sendemail.php
<?php
//Import PHPMailer classes into the global namespace
use PHPMailerPHPMailerPHPMailer;
use PHPMailerPHPMailerException;
require_once 'vendor/autoload.php';
$mail = new PHPMailer(true);
?>
Ülaltoodud koodi juurde lisasin PHP-faili PHPMaileri teegi keskkonna.
Järgmisena peab kasutaja PHPMaileri abil meilide saatmiseks edastama Gmaili SMTP-serveri aadressi, Gmaili SMTP-pordi ja SMTP-autentimise (mis pole midagi muud kui teie Google’i konto kasutajanimi ja parool).
$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
See selleks! Konfiguratsioon on valmis. Nüüd on hea, kui saadate kasutajale meili.
$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';
Asendage kohatäited tegelike väärtustega. Käivitage see fail brauseris ja teie e-kiri tuleks saata saaja e-posti aadressile.
Manuste saatmine meilis
PHPMaileri teeki kasutades saab e-kirjas saata ühe või mitu manust. Kõik, mida peate tegema, on oma manuste kataloogitee edastamine meetodile addAttachment
järgmiselt.
$mail->addAttachment(__DIR__. '/attachment1.png');
$mail->addAttachment(__DIR__. '/attachment2.jpg');
Meie lõplik kood on järgmine.
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;
}
?>
Loodan, et mõistate, kuidas saata e-kirju Gmaili SMTP-serveri abil PHP-skriptist. Palun jagage oma mõtteid ja ettepanekuid allpool toodud kommentaaris.