Отправка электронной почты с помощью SMTP-сервера Gmail из сценария PHP
Электронная почта играет важную роль на сайте. Каждый веб-сайт обычно должен отправлять пользователям электронные письма. Эти электронные письма можно отправлять со страницы контактов, из рассылки новостей, регистрационной формы и т.д.
PHP предоставляет mail()
функцию, которая используется для отправки электронной почты. Но есть ограничения при использовании mail()
метода. Вы не можете отправлять электронную почту с локального сервера разработки. Другой недостаток заключается в высокой вероятности попадания вашего электронного письма в спам.
В большинстве случаев mail()
метод даже не отправляет электронное письмо. Это может быть из-за неправильной конфигурации сервера или чего-то еще.
Чтобы избежать этих проблем или ограничений, можно использовать SMTP-сервер для отправки электронных писем.
В этой статье мы изучаем, как использовать PHPMailer и SMTP-сервер Gmail для отправки электронных писем.
Монтаж
Сначала вам нужно установить библиотеку PHPMailer в свой проект. Рекомендуемый способ установки библиотеки – через Composer.
Откройте командную строку в корневом каталоге вашего проекта и выполните следующую команду.
composer require phpmailer/phpmailer
Поскольку мы используем Gmail SMTP, вам необходимо изменить некоторые настройки в своей учетной записи Google. Войдите в свою учетную запись Google и нажмите «Моя учетная запись». Находясь на странице «Моя учетная запись», нажмите «Безопасность». Прокрутите вниз, и вы найдете настройки «Небезопасный доступ к приложениям». Установите его в положение ВКЛ.
После этого нам нужно написать код, который отправляет электронное письмо с использованием библиотеки 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 и библиотеки Swift Mailer
- Отправка электронной почты с помощью Mailjet на PHP