WEB и WordPress новости, темы, плагины. Здесь мы делимся советами и лучшими решениями для сайтов.

Отправка электронной почты с помощью SMTP-сервера Gmail из сценария PHP

675

Электронная почта играет важную роль на сайте. Каждый веб-сайт обычно должен отправлять пользователям электронные письма. Эти электронные письма можно отправлять со страницы контактов, из рассылки новостей, регистрационной формы и т.д.

PHP предоставляет mail()функцию, которая используется для отправки электронной почты. Но есть ограничения при использовании mail()метода. Вы не можете отправлять электронную почту с локального сервера разработки. Другой недостаток заключается в высокой вероятности попадания вашего электронного письма в спам.

В большинстве случаев mail()метод даже не отправляет электронное письмо. Это может быть из-за неправильной конфигурации сервера или чего-то еще.

Чтобы избежать этих проблем или ограничений, можно использовать SMTP-сервер для отправки электронных писем.

В этой статье мы изучаем, как использовать PHPMailer и SMTP-сервер Gmail для отправки электронных писем.

Монтаж

Сначала вам нужно установить библиотеку PHPMailer в свой проект. Рекомендуемый способ установки библиотеки – через Composer.

Откройте командную строку в корневом каталоге вашего проекта и выполните следующую команду.

composer require phpmailer/phpmailer

Поскольку мы используем Gmail SMTP, вам необходимо изменить некоторые настройки в своей учетной записи Google. Войдите в свою учетную запись Google и нажмите «Моя учетная запись». Находясь на странице «Моя учетная запись», нажмите «Безопасность». Прокрутите вниз, и вы найдете настройки «Небезопасный доступ к приложениям». Установите его в положение ВКЛ.

Отправка электронной почты с помощью SMTP-сервера Gmail из сценария PHP

После этого нам нужно написать код, который отправляет электронное письмо с использованием библиотеки 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. Поделитесь своими мыслями и предложениями в комментариях ниже.

Статьи по Теме

Источник записи: artisansweb.net

Этот веб-сайт использует файлы cookie для улучшения вашего опыта. Мы предполагаем, что вы согласны с этим, но вы можете отказаться, если хотите. Принимаю Подробнее