Как подключить phpmailer к своей форме

Содержание
  1. Отправка электронных писем с помощью библиотеки PHPMailer языка PHP
  2. Установка библиотеки PHPMailer
  3. Отправка электронных писем с локального сервера с помощью PHPMailer
  4. Отправка письма с вложениями
  5. Устранение проблем в коде
  6. Отображение сообщений об ошибках на требуемом языке
  7. Использование протокола SMTP
  8. Извлечение писем через протокол POP3
  9. Заключение
  10. Отправка писем с помощью PHPMailer
  11. Отправка писем через функцию mail() с помощью PHPMailer
  12. Отправка писем через SMTP с помощью PHPMailer на примере Yandex и Google
  13. Отправка письма с вложением с помощью PHPMailer
  14. Отправка подписанного и зашифрованного письма через PHPMailer
  15. Генерация приватного и публичного ключей
  16. Добавление DNS-записи с публичным ключом
  17. Настройка подписи DKIM в PHPMailer и отправка письма
  18. Возможности SMTP клиента PHPMailer.
  19. Установка и первоначальная подготовка SMTP клиента PHPMailer к работе
  20. Подключаем и инициализируем класс PHPMailer
  21. Пример конфигурации SMTP клиента PHPMailer:
  22. Выводы

Отправка электронных писем с помощью библиотеки PHPMailer языка PHP

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

Для работы mail() требуется сконфигурированный локальный сервер, в то время как PHPMailer поддерживает протокол SMTP, который могут использовать аутентифицированные пользователи.

Рассмотрим ещё несколько преимуществ использования PHPMailer:

К слову, PHPMailer используют многие CMS, созданные на языке PHP: например, WordPress, Joomla! и Drupal.

Установка библиотеки PHPMailer

Для установки PHPMailer можно использовать менеджер пакетов (композер), выполнив следующую команду:

composer require phpmailer/phpmailer

Отправка электронных писем с локального сервера с помощью PHPMailer

Ниже представлен простой код для отправки электронного письма с локального сервера через библиотеку PHPMailer:

use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;

//From email address and name
$mail->From = «from@yourdomain.com»;
$mail->FromName = «Full Name»;

//To address and name
$mail->addAddress(«recepient1@example.com», «Recepient Name»);
$mail->addAddress(«recepient1@example.com»); //Recipient name is optional

//Address to which recipient will reply
$mail->addReplyTo(«reply@yourdomain.com», «Reply»);

//CC and BCC
$mail->addCC(«cc@example.com»);
$mail->addBCC(«bcc@example.com»);

//Send HTML or Plain Text email
$mail->isHTML(true);

$mail->Subject = «Subject Text»;
$mail->Body = «Mail body in HTML«;
$mail->AltBody = «This is the plain text version of the email content»;

Представленный код с комментариями наглядно демонстрирует все действия, которые нужно выполнить для отправки письма.

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

В приведённом ниже коде показано, как отправить письмо с вложениями с помощью PHPMailer:

use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;

$mail = new PHPMailer;

$mail->From = «from@yourdomain.com»;
$mail->FromName = «Full Name»;

$mail->addAddress(«recipient1@example.com», «Recipient Name»);

//Provide file path and name of the attachments
$mail->addAttachment(«file.txt», «File.txt»);
$mail->addAttachment(«images/profile.png»); //Filename is optional

$mail->Subject = «Subject Text»;
$mail->Body = «Mail body in HTML«;
$mail->AltBody = «This is the plain text version of the email content»;

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

Устранение проблем в коде

В зависимости от типа системы, наиболее распространенной ошибкой при использовании встроенной функции mail() в фоновом режиме является следующая:

Mailer Error: Could not instantiate mail function.

Если нужно получить больше сведений о возникшей ошибке, можно добавить следующий код в блок catch<> :

Как правило, ошибки использования функции mail() связаны с тем, что почтовый сервер не был сконфигурирован. В этом случае функция error_get_last вернёт следующее:

Array (
⠀⠀⠀⠀ [type] => 2
⠀⠀⠀⠀ [message] => mail(): Failed to connect to mailserver at «localhost» port 25, verify your «SMTP» and «smtp_port» setting in php.ini or use ini_set()
⠀⠀⠀⠀ [file] => OUR_PATH \vendor\phpmailer\phpmailer\src\PHPMailer.php
⠀⠀⠀⠀ [line] => 863
`)

Читайте также:  Как подключить газовый счетчик в частном доме

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

Отображение сообщений об ошибках на требуемом языке

В папку language также можно добавить любой другой язык из 43 доступных.

Использование протокола SMTP

Для отправки электронных писем можно использовать почтовый сервер другого хоста, но сперва необходимо пройти аутентификацию. То есть для отправки писем через почтовый сервер Gmail необходимо иметь учётную запись в этом сервисе.

SMTP – протокол запроса на отправку электронного письма, используемый почтовыми клиентами. После того, как почтовый сервер проверит электронное письмо, он отправит его на указанный почтовый сервер.

Ниже приведен пример отправки письма через почтовый сервер Gmail с клиентского домена. Поскольку мы используем SMTP-протокол, локальный почтовый сервер не требуется:

use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\SMTP;
use PHPMailer\PHPMailer\Exception;

$mail = new PHPMailer(true);

//Enable SMTP debugging.
$mail->SMTPDebug = 3;
//Set PHPMailer to use SMTP.
$mail->isSMTP();
//Set SMTP host name
$mail->Host = «smtp.gmail.com»;
//Set this to true if SMTP host requires authentication to send email
$mail->SMTPAuth = true;
//Provide username and password
$mail->Username = «name@gmail.com»;
$mail->Password = «super_secret_password»;
//If SMTP requires TLS encryption then set it
$mail->SMTPSecure = «tls»;
//Set TCP port to connect to
$mail->Port = 587;

$mail->From = «name@gmail.com»;
$mail->FromName = «Full Name»;

$mail->addAddress(«name@example.com», «Recepient Name»);

$mail->Subject = «Subject Text»;
$mail->Body = «Mail body in HTML«;
$mail->AltBody = «This is the plain text version of the email content»;

Сервер Gmail использует TSL-шифрование поверх SMTP, поэтому в коде было установлено соответствующее значение для свойства объекта PHPMailer. Перед отправкой по протоколу SMTP необходимо указать имя хоста, номер порта, тип шифрования и пройти аутентификацию, а также предоставить имя пользователя и пароль. Если в Gmail была включена функция двухфакторной аутентификации, доступ к SMTP через имя пользователя и пароль будет закрыт. Для получения доступа необходимо внести дополнительные настройки.

Извлечение писем через протокол POP3

Библиотека PHPMailer поддерживает отправку писем по методу аутентификации POP перед SMTP. Иначе говоря, вы сможете пройти аутентификацию через POP и отправлять почту через SMTP. К сожалению, в PHPMailer реализована только возможность отправки электронных писем, поэтому получать почту по протоколу POP3 с использованием библиотеки не получится.

Заключение

Если вы являетесь PHP-разработчиком, вы будете часто сталкиваться с необходимостью программной отправки электронных писем. Конечно, можно использовать сторонние сервисы (Mandrill или SendGrid) или написать свою собственную библиотеку, но лучшим инструментом для решения этой задачи пока по-прежнему остаётся PHPMailer.

Источник

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

Для начала разберу пару простых примеров, чтобы было понятно, как отправлять письма с помощью 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, необходимо выполнить несколько действий:

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

Генерация приватного и публичного ключей

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

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

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

Добавление DNS-записи с публичным ключом

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

Нужно добавить DNS-запись следующего вида:

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

TTL: 3600 (или какое будет по-умолчанию)

Тип записи: TXT

Значение: v=DKIM1; h=sha256; t=s; p=ВАШ_ПУБЛИЧНЫЙ_КЛЮЧ

В имени записи test.ru нужно заменить на имя вашего домена. Слова «ВАШ_ПУБЛИЧНЫЙ_КЛЮЧ» вы заменяете на текст, который вы получили на предыдущем шаге после «Public key», без «——BEGIN PUBLIC KEY——» и «——END PUBLIC KEY——«, только сам ключ. При этом все строчки ключа нужно соединить в одну длинную строку, чтобы переводов строки не было.

Настройка подписи DKIM в PHPMailer и отправка письма

Теперь осталось лишь сделать несколько настроек PHPMailer перед отправкой письма и оно будет подписано. Думаю, на приведенном примере будет всё понятно:

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

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

Читайте также:  Как подключить sixaxis к android

Источник

Любой backend программист php сталкивается с задачей автоматизации почтовой рассылки на веб сайтах и многие,
кто сталкивался с данной задачей впервые, вставали перед ключевым вопросом: «Писать или не писать smtp клиент с нуля?».

Класс PHPMailer дает нам возможность легко и быстро писать скрипты рассылки почтовых уведомлений с гибкой системой отладки данного скрипта. Скрипт написан на языке программирования PHP и поддерживает стандарты криптографического шифрования при обмене сообщениями с сервером TLS\SSL.

Для использования PHPMailer на своем сервере вам необходима возможность подключения к внешним SMTP серверам при помощи PHP.

Возможности SMTP клиента PHPMailer.

Установка и первоначальная подготовка SMTP клиента PHPMailer к работе

Прежде всего необходимо скачать свежую версию SMTP библиотеки: https://github.com/PHPMailer/PHPMailer

Затем распаковываем скачанный архивчик и изучаем содержимое SMTP библиотеки PHPMailer:

Все остальное не несет функциональной нагрузки и предоставляется в качестве информационного дополнения к библиотеке PHPMailer.

Многие любят создавать дополнительно файл конфигурации для SMTP клиента PHPMailer и в дальнейшем использовать его. Я тоже приверженец этой традиции и предлагаю на рассмотрение пример такого файла.

config.php:

Заливаем все это богатство на наш хостинг и готовимся к первой инициализации и пробной отправке первого письма при помощи SMTP клиента PHPMailer.

Подключаем и инициализируем класс PHPMailer

Для подключения класса PHPMailer необходимо подключить файлы PHPMailerAutoload.php и config.php:

Далее происходит процесс конфигурации SMTP клиента PHPMailer и отправка письма. Пример конфигурации вы можете посмотреть в директории с примерами /examples или воспользоваться нашим примером конфигурации и отправки письма при помощи класса PHPMailer.

Пример конфигурации SMTP клиента PHPMailer:

Данный пример демонстрирует работу библиотеки PHPMailer в качестве SMTP клиента.

Выводы

Мы рекомендуем библиотеку PHPMailer в качестве простого и надежного класса для работы с SMTP серверами. Данная библиотека позволит быстро организовать рассылку практически любой сложности, провести гибкую отладку работы скриптов.

Мы неоднократно использовали и продолжаем использовать данную библиотеку в своих проектах!

Всем спасибо за внимание!

Лучший способ сказать автору «СПАСИБО» рассказать друзьям или поделиться ссылкой!
Другие статьи:

В этой статье Мы покажем Вам, как сделать так, чтобы шапка сайта выезжала при прокрутке страницы вверх, но при этом скрывалась при прокрутке страницы вниз, чтобы не загораживать нам просмотр самой страницы.

DateTimePicker – удобный и легкий в использовании плагин для быстрой подстановки даты и времени в поля ввода.

В этой статье будет рассмотрено решение этой задачи с использованием плагина Masked Input, который отличается простотой и удобством в использовании.

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

С помощью PHPExcel можно производить чтение и запись информации в файлы, форматировать их содержимое,выполнять операции с формулами, стилями и т.д.

Текстовый редактор TinyMCE в визуальном режиме при стандартной конфигурации обрезает некоторый теги и свойства.

Научимся вставлять теги в выделенный фрагмент текста, вставлять теги на место селектора в тексте и получать средствами JS HTML код отредактированного текста и текст без HTML сущностей.

Как вы уже поняли, редактор является платформенным Javascript редактором HTML кода, т.е. WYSIWYG редактором для сайтов и веб приложений. Разработчиком этого полезного продукта является компания Moxiecode Systems AB.

В статье мы: познакомимся с каруселью; научимся интегрировать ее на свой сайт; познакомимся с основными параметрами инициализации;рассмотрим самые популярные свойства и методы классов jCarousel

Источник

Поделиться с друзьями
Делаю сам
Adblock
detector