Надіслати електронну пошту за допомогою SMTP-сервера Gmail із PHP Script
Електронна пошта відіграє важливу роль на веб-сайті. Кожному веб-сайту зазвичай потрібно надсилати електронні листи користувачам. Ці електронні листи можна надіслати зі сторінки зв’язку з нами, бюлетеня, реєстраційної форми тощо.
PHP надає mail()
функцію, яка використовується для надсилання електронного листа. Але при використанні mail()
методу існують обмеження. Ви не можете надсилати електронні листи з локального сервера розробки. Іншим недоліком є висока ймовірність того, що ваша електронна пошта потрапить у спам.
У більшості випадків mail()
метод навіть не надсилає електронного листа. Це може бути через неправильну конфігурацію сервера або щось інше.
Щоб вийти з цих проблем або обмежень, можна використовувати SMTP-сервер для надсилання електронних листів.
У цій статті ми вивчаємо, як використовувати PHPMailer та SMTP-сервер Gmail для надсилання електронних листів.
Встановлення
Спочатку потрібно встановити бібліотеку PHPMailer у свій проект. Рекомендований спосіб встановлення бібліотеки – через Composer.
Відкрийте командний рядок у кореневому каталозі проекту та запустіть команду нижче.
composer require phpmailer/phpmailer
Оскільки ми використовуємо Gmail SMTP, вам потрібно змінити деякі налаштування свого облікового запису Google. Увійдіть у свій обліковий запис Google і натисніть на Мій рахунок. Перейшовши на сторінку «Мій обліковий запис», натисніть «Безпека». Прокрутіть униз, і ви знайдете налаштування "Менш безпечний доступ до програми". Встановіть його на ON.
Після цього нам потрібно написати код, який надсилає електронне повідомлення за допомогою бібліотеки PHPMailer та SMTP-сервера Gmail.
PHP-скрипт для надсилання електронної пошти за допомогою SMTP-сервера Gmail
Відкрийте свій PHP-файл, де вам потрібно написати код електронної пошти. Наприклад, я припускаю, що у вас є sendemail.php
файл у кореневому каталозі.
sendemail.php
<?php
//Import PHPMailer classes into the global namespace
use PHPMailerPHPMailerPHPMailer;
use PHPMailerPHPMailerException;
require_once 'vendor/autoload.php';
$mail = new PHPMailer(true);
?>
У наведеному вище коді я включив середовище бібліотеки PHPMailer у файл PHP.
Далі, для надсилання електронних листів за допомогою PHPMailer користувачеві потрібно передати адресу SMTP-сервера Gmail, SMTP-порт для Gmail та автентифікацію SMTP (що є нічим іншим, як вашим іменем користувача та паролем облікового запису Google).
$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->isHTML(true);
$mail->Subject = 'Email subject';
$mail->Body = '<b>Email Body</b>';
$mail->send();
echo 'Message has been sent';
Замініть заповнювачі фактичними значеннями. Запустіть цей файл у браузері, і ваша електронна пошта повинна надійти на електронну адресу одержувача.
Надсилання вкладень в електронному листі
Використовуючи бібліотеку PHPMailer, можна надіслати одне або кілька вкладень в електронному листі. Все, що вам потрібно зробити, це передати шлях до вкладених файлів методу addAttachment
наступним чином.
$mail->addAttachment(__DIR__. '/attachment1.png');
$mail->addAttachment(__DIR__. '/attachment2.jpg');
Наш остаточний код такий.
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;
}
?>
Сподіваюся, ви розумієте, як надсилати електронну пошту за допомогою SMTP-сервера Gmail зі сценарію PHP. Будь ласка, поділіться своїми думками та пропозиціями в коментарі нижче.
Пов’язані статті
- Відправка електронної пошти через сервер SMTP Gmail в Laravel
- Надіслати електронну пошту за допомогою SMTP-сервера Gmail та бібліотеки
- Надіслати електронну пошту за допомогою Mailjet у PHP