Настройка и примеры отправки писем через PHPMailer

Настройка и примеры отправки писем через PHPMailer

PHPMailer ౼ популярная библиотека для отправки электронной почты через PHP.​ Она предоставляет простой и удобный способ отправки писем с использованием SMTP-сервера или локального почтового сервера.​

Шаг 1⁚ Установка PHPMailer

Для использования PHPMailer вам необходимо установить его в ваш проект.​ Самый простой способ установки ‒ использовать Composer.​ В вашем файле composer.​json добавьте следующую зависимость⁚

«`php
«require»⁚ {
«phpmailer/phpmailer»⁚ «^6.​5»
}
«`

Выполните команду «`composer install«` в терминале, чтобы установить PHPMailer и его зависимости.​

Шаг 2⁚ Настройка PHPMailer

После установки PHPMailer вам необходимо настроить его для отправки писем.​ Вот пример настройки⁚

«`php
use PHPMailer\PHPMailer\PHPMailer;

require ‘vendor/autoload.​php’;

$mail = new PHPMailer;

$mail->isSMTP;
$mail->Host = ‘smtp.​gmail.​com’;
$mail->SMTPAuth = true;
$mail->Username = ‘[email protected]’;
$mail->Password = ‘your_password’;
$mail->SMTPSecure = ‘tls’;
$mail->Port = 587;

$mail->setFrom(‘from@example.​com’, ‘Your Name’);
$mail->addAddress(‘[email protected]’, ‘Recipient Name’);

$mail->isHTML(true);

$mail->Subject = ‘Тестовое письмо’;
$mail->Body = ‘Привет, это тестовое письмо от PHPMailer!’;
$mail->AltBody = ‘Привет, это тестовое письмо от PHPMailer!’;

if(!​$mail->send) {
echo ‘Ошибка отправки письма⁚ ‘ .​ $mail->ErrorInfo;
} else {
echo ‘Письмо успешно отправлено!​’;
}
«`

В этом примере мы используем SMTP-сервер Gmail для отправки писем.​ Замените `your_email@gmail;com` и `your_password` на адрес электронной почты и пароль вашей учетной записи Gmail.​ Также замените `from@example.​com` и `recipient@example.​com` на адрес электронной почты отправителя и получателя соответственно.​

Шаг 3⁚ Примеры отправки писем

PHPMailer предоставляет множество возможностей для отправки писем.​ Вот некоторые примеры использования⁚

  • Отправка письма с вложением⁚
  • «`php
    $mail->addAttachment(‘/path/to/file.​pdf’, ‘attachment.pdf’);
    «`

  • Отправка письма в формате plain text⁚
  • «`php
    $mail->isHTML(false);
    $mail->Body = ‘Привет, это тестовое письмо от PHPMailer в формате plain text!​’;
    «`

  • Добавление изображения в письмо⁚
  • «`php
    $mail->addEmbeddedImage(‘/path/to/image.​jpg’, ‘image’);
    $mail->Body = ‘‘;
    «`

  • Отправка письма нескольким получателям⁚
  • «`php
    $mail->addAddress(‘[email protected]’, ‘Recipient 1’);
    $mail->addAddress(‘recipient2@example.​com’, ‘Recipient 2’);
    «`

  • Отправка письма через локальный почтовый сервер⁚
  • «`php
    $mail->isSMTP;
    $mail->Host = ‘localhost’;
    «`

Это только некоторые примеры использования PHPMailer.​ С помощью этой библиотеки вы можете отправлять письма с различными опциями и настраивать их в соответствии с вашими потребностями.​

PHPMailer — это очень полезная и популярная библиотека для отправки электронной почты с веб-сайта. В этой статье подробно описана базовая настройка библиотеки и приведен пример кода для отправки сообщений. PHPMailer предоставляет все необходимое для работы с электронной почтой: отправка через различные серверы разными способами, включая smtp, а также возможность шифровать и подписывать письма, чтобы они не попали в папку нежелательной почты.

Скачать библиотеку PHPMailer можно с https://github.com/PHPMailer/PHPMailer (кнопка «Code» -> (Скачать zip).

Начнем с простого примера, показывающего, как отправлять электронные письма с помощью PHPMailer.

Отправка писем через функцию mail() с помощью PHPMailer

Отправка сообщения с вашего хостинга через почтовый сервер очень проста и выглядит следующим образом

Как видите, все очень просто. Подключите библиотеку, введите отправителя, получателя, тему и текст письма и отправьте. Отправка писем таким способом работает только с адресами электронной почты в вашем домене (если они не связаны с другим отправителем).

Отправка писем через SMTP с помощью PHPMailer на примере Yandex и Google

Вы также можете отправить письмо из другого списка рассылки, например, Яндекс. Код выглядит следующим образом.

Существуют тонкие различия при отправке почты через Google. Необходимо разрешить доступ ненадежным приложениям к аккаунту Google. Для этого зайдите в свою учетную запись https://myaccount.google.com, перейдите в раздел Безопасность, перейдите в раздел Недоверенные приложения с доступом к вашей учетной записи и измените опцию на Разрешить. На момент написания статьи это https://myaccount.google.com/u/0/lesssecureapps.

Кроме того, для php-программ, отправляющих электронную почту через PHPMailer, это то же самое, что отправлять электронную почту через yandex. Все, что требуется, это изменить конфигурацию SMTP следующим образом.

Если первый раз запускаете программу отправки через smtp, тогда желательно перед отправкой дополнительно использовать $mail->SMTPDebug = 1; Получение всех сообщений клиента и smtp-сервера, т.е. всех процессов входа, аутентификации и т.д. Это очень полезно для отладки вашей программы.

Отправка письма с вложением с помощью PHPMailer

Это очень просто: достаточно использовать метод addAttachment. Вот некоторые более сложные функции с примерами.

Вы можете использовать addAddress для добавления нескольких адресов получателей. В качестве альтернативы можно использовать clearAddresses(), чтобы очистить все адреса получателей, если это необходимо. Все вложения могут быть удалены с помощью функции clearAttachments().

Вы также можете использовать AddEmbeddedImage для добавления вложений (обычно изображений) в сообщение электронной почты, которые не могут быть загружены, с целью использования их в HTML-коде. Пример использования не загружаемого изображения в электронном письме :

Поэтому вы можете отправить сообщение электронной почты с изображениями, которые будут включены только в тело сообщения, но не могут быть загружены в качестве вложений. Эти изображения можно использовать в любом месте HTML-кода письма, просто замените URL на cid изображения, используемого в AddEmbeddedImage.

Отправка подписанного и зашифрованного письма через PHPMailer

По умолчанию PHPMailer шифрует все электронные письма. Единственный способ отключить шифрование — отправлять электронные письма через SMTP с паролем.

Подписание сообщения с помощью подписи DKIM состоит из нескольких этапов.

  • Сгенерируйте закрытый и открытый ключи домена.
  • Добавьте запись DNS для домена TXT, используя открытый ключ
  • Настройте DKIM-подписи в PHPMailer перед отправкой письма.

Теперь мы подробно объясним каждый шаг.

Генерирование закрытого и открытого ключей

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

Следовательно, test-private.pem и test-public.pem — это закрытый и открытый ключи. Они должны храниться в папке, к которой не могут получить доступ посетители или кто-либо еще, кроме вас.

Если вы не можете использовать команды оболочки, вы можете использовать следующий код для создания закрытого и открытого ключей и сохранения их в файл.

Внимание! Не забудьте убедиться, что папка, в которой хранятся файлы, записана.

Добавьте регистрацию DNS к открытому ключу

Запись DNS необходима для того, чтобы почтовый сервер мог получать сообщения для чтения регистрации DNS и проверки подписи сообщения. Как правило, регистрация DNS может быть добавлена либо в панели управления полем, либо в панели управления хостингом. Если вы не знаете, как добавить регистрацию, обратитесь к своему хостинг-провайдеру.

Необходимо добавить следующие регистрационные записи DNS

Имя записи: mail._domainkey.test.ru. (Заканчивается точкой. «.») (заканчиваются точкой; «.»).

TTL: 3600 (или то, что будет установлено по умолчанию).

Тип регистрации: txt.

Значения: v = dkim1; H = SHA256; t = s; p = your_public_lock

Имя test.ru, регистрация должна быть заменена на имя поля. Замените слова «your_public_key» текстом, полученным на предыдущем шаге, после слова «public key». — «, только сам ключ. Все строки ключа должны бытьВ больших струнах.Никаких дополнительных строк добавлять не следует.

Установите подпись dkim в phpmaer и отправьте сообщение

Теперь вам нужно сделать несколько миньонов в phpmailer перед отправкой сообщения. Это будет подписано. Из приведенного выше примера все должно быть понятно.

Конечно, вам нужно будет изменить test.ru, используя имя поля и test-private.pem.

Теперь письма, отправляемые через phpmailer, будут подписаны DKIM с вашим приватным ключом.

SMTP Gmail и PHPMailer для отправки писем с сайта в 2023 году

ЧИТАТЬ ЕЩЁ:  Использование XMLXSL для публикации в Web
Оцените статью