php отправка почты через smtp яндекса
Отправка писем с помощью 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 вашим приватным ключом.
Вменяемая инструкция к PHPMailer “Отправка писем и файлов на почту”
Apr 23, 2019 · 4 min read
PHPMailer обновился и инструкция к прошлой версии не актуальна, хотя вы также можете использовать прикреплённые файлы в той инструкции. Работать будет.
Прошло несколько лет, но у вас всё также нет выхода, и PHPMAILER — это самый простой способ отправлять со своего сайта письма на почту.
О чем эта инструкция.
Это инструкция по добавлению на ваш сайт PHPMailer и отправки писем с прикреплёнными файлами к вам на почту без перезагрузки страницы.
1. Скачиваем PHPMailer
Переходим на сайт https://github.com/PHPMailer/PHPMailer и скачиваем последнюю версию
Во всём архиве нам нужны только 3 файла:
Всё остальн о е, что хранится на Github — на*уй не нужно, можете удалять.
2. Удаляем из файлов весь хлам
Этот пункт вы можете пропустить. Он не является обязательным
Файлы, написанные разработчиками PHPMailer, содержат немереное количество мусора, состоящего из одних комментариев (зачем?!). Вес этих трёх файлов вместе с комментариями равен 196кб, после удаления комментов вес составит 72кб. Почти в 3 раза…
Я предлагаю удалить все комментарии в файлах с помощью какого-нибудь “PHP минификатора”. Можете использовать любой, я взял (первый попавшийся) http://php-minify.com
Процедуру повторяете со всеми тремя файлами.
Для наглядности файл Exception.php
3. Перемещаем файлы в проект
И теперь помещаем эти 3 файла в наш проект. Я создал специально для этих файлов папку под названием phpmailer
4. Создаём файл конфигурации
Создадим файл send.php с таким содержанием
Здесь вам нужно отредактировать эти поля под себя:
Нужно использовать не пароль от самой почты, а “Пароль приложения”. В настройках вашей почты, будь то Gmail, Yandex или Mailru— есть раздел “Пароли приложений”, где вы можете специально создать отдельный сгенерированный пароль для PHPMailer.
Сохраняем этот файл send.php и помещаем его в корень сайта
В примере указаны настройки для Яндекса. Вы можете использовать любую почту для отправки. Для изменения почты отправки, к примеру, на Gmail — нужно изменить эти поля:
$mail->Host = ‘smtp.gmail.com’; // SMTP сервер
$mail->SMTPSecure = ‘ssl’; // шифрование
$mail->Port = 465; // Порт
5. Создаём HTML форму
Теперь поместим эту форму в нужное место на вашем сайте
Обратите внимание на onsubmit. Там вторым аргументом должно быть указано имя файла, то есть send.php.
6. Прописываем JavaScript
Отправка писем через SMTP с авторизацией на php
В этой статье я хочу показать как можно сделать отправку писем из php через smtp сервер на примере smtp.yandex.ru
Иногда бывает такое, что на хостинге запрещено отсылать письма стандартными средствами — mail(), такое в основном бывает на бесплатных хостингах 🙂 Так же бывает необходимость слать почту через smtp и на серверах, по ряду различных причин.
Приступим к реализации, для выполнения отправки через smtp потребуется возможность работы php с сокетами. Код получился большой и для удобства я его оформил в отдельный класс, который можно скачать тут.
Ниже пример использования класса:
Обновление 30.09.2014
В последнее время Яндекс не работает через простой сокет, только через SSL, поэтому следует использовать вот такой код для вызова класса:
Обновление 1.10.2014
Обновлен класс. Теперь корректно происходит работа с почтовым сервером mail.ru по SSL протоколу.
Так же для корректной работы с mail.ru необходимо в заголовках письма в отправителе указывать e-mail, с которого происходит отправка, например:
Если авторизация происходит через e-mail ipatovsoft@mail.ru, то заголовок должен выглядеть следующим образом:
Обновление 2.10.2014
Класс подредактирован, теперь работает и с gmail.com через протокол SSL
Пример:
Так же вы можете почитать об обновленном классе и работе через протокол ssl в новой статье: Отправка писем через SMTP с авторизацией по протоколу SSL на php.
Обновление 13.03.2018: Класс обновился, подробнее тут: Новая версия класса SendMailSmtpClass
Отправка писем через SMTP с авторизацией по протоколу SSL на php
SMTP с авторизацией по протоколу SSL. Введение
Эта статья является продолжением ранее написанной, на тему Отправка писем через SMTP с авторизацией на php. В предыдущей статье я выкладывал исходники класса, который писал для своих нужд, работа которого заключалась в отправке писем через smtp Яндекса. Но статья стала популярной и многие читатели блога, стали присылать вопросы по работе класса. Главной проблемой стала работа через протокол SSL. А в последнее время эта проблема стала возникать еще чаще, поскольку все популярные почтовые сервера перешли на работу по защищенному протоколу SSL. В связи с этим я немного дописал класс, он теперь способен работать и по SSL, обновленную версию можете скачать тут.
Обновление 13.03.2018: Класс обновился, подробнее тут: Новая версия класса SendMailSmtpClass
SMTP с авторизацией по протоколу SSL. Яндекс
Для работы с почтовым сервером Яндекс ни чего не изменилось, единственное, что при вызове класса, необходимо указывать ссылку на хост, работающий через SSL и изменился номер порта: был 25, стал 465. Выглядит код отправки теперь вот так:
SMTP с авторизацией по протоколу SSL. Майл
Для работы с почтовым сервером Mail.ru обновленный класс тоже подходит, как и в случае я Яндексом, тут необходимо также указать ссылку на хост с ssl и ображаться к порту 465.
Помимо этого, для корректной работы с Mail.ru в заголовках письма необходимо указывать отправителя, точно такого же с которого происходит авторизация на сервере или e-mail отправителя не указывать вовсе.
Код отправки письма через почтовый сервер Mail.ru выглядит вот так:
SMTP с авторизацией по протоколу SSL. Gmail
Для работы с почтовым сервером gmail.com, необходимо указывать ссылку на хост, работающий через SSL и номер порта 465. Выглядит код отправки теперь вот так:
На этом пока все, жду комментариев о работе обновленного класса.
Дополнения
19.10.2014 Иван Ткаченко подсказал, что можно расширить возможности класса и отправлять письмо сразу нескольким получателям, за это ему большое спасибо!
Для отправки нескольким получателям через «,» заменить
Это:
05.08.2016 Сегодня в комментарии подсказали по поводу проблемы с кодировкой, спасибо за это Евгению:
«Для тех у кого в теле и сабже полученного письма кракозябры — проверьте кодировку сервера по умолчанию и кодировку в которой написан сам скрипт. У меня windows-1251 так что прежде чем вызывать метод send использую»
22.11.2016 Сегодня в комментарий добавили полезный код, который позволяет отправлять, с помощью класса, не только текст, но и файлы. Спасибо большое, за этот код Анжелике. Ниже код:
Отправка писем через SMTP с авторизацией по протоколу SSL на php: 107 комментариев
На майл ру постоянно ругается на авторизацию. Якобы пароль не проходит, но пароль передается правильный.
Здравствуйте, а вы локально пробовали отправлять или с хостинга?
С хостинга сайта. И еще вопрос небольшой. Прикрутил форму для отправки, но в отправленном письме нет вкладки получатели только от кого, тема письма и само письмо. В коде изменений не проводил. Только данные заменил переменными.
Спасибо. Очень хороший скрипт. Прикрутил к сайту.
Да и smtp mail.ru заработал. Походу неполадки на сервере были.
Буду признателен за ответ.
Здравствуйте.
Я сам всегда использую Яндекс, с mail.ru и gmail.com сталкивался только при тестировании класса.
По работе с Яндекс ни чего плохого сказать не могу, моим потребностям удовлетворял полностью.
А у меня не проходит даже этап HELO при отправке через яндекс…
Письмо не отправлено. Ошибка: Error of command sending: HELO
класс вызываю так:
$mailSMTP = new SendMailSmtpClass(‘r****n@yandex.ru’, ‘c*****z’, ‘ssl://smtp.yandex.ru’, ‘r****n’, 465);
Отличный класс, спасибо!
спасибо за код)Админ помоги прикрутить твой класс к скрипту,в пхп я дуб,а тебе разобраться во всем 5 минут. За работу подкину на пивко))
А что не получается? пишите в комментарии или на почту admin@vk-book.ru или zhenikipatov@yandex.ru
Почему-то не работает с яндексом. Выдает Autorization error. Пароли и логины верные.
‘noreply@citymall-nk.ru’ — Это ваш логин на яндексе? Они же вроде только со своим доменом дают логины.
Нужно вводить логин и пароль от Вашей яндекс почты, привязанная к яндексу почта не подходит.
Все подходит. Я только что отправил.
Отлично. Встроил в CMS
Для отправки нескольким получателям через «,» заменить
Это:
Комментарии часть кода вырезали, но думаю суть ясна, отправить RCPT TO на каждый email
Спасибо, ценное дополнение. Я отформатировал ваш код, теперь корректно отображается.
К сожалению он частично обрезался… по этому вижу что он не корректен.
Отправляю почту через sss.yandex, все работает, однако если в тексте письма есть какая-то ссылка, то письмо не доставляется. Почему так?
А как вы отправляете ссылки?
Я сейчас попробовал — все работает. Вот так делал:
Оказалось проблема немного в другом. При использовании ssl.gmail — все ОК, но при использовании ssl.yandex — возникают проблемы с доставкой писем. Причем очень выборочно происходит. 2 доставляет, 1 не доставляет. Яндекс гоняет.
Спасибо больше. Все работает.
Работает письма доставляет, спасибо. Только тема почему то приходит такой: =?utf-8?B?0JrQvtGB0LjQutC4=?=
Как исправить?
А где вы смотрите письмо? почтовый клиент какой-то или через какой-то почтовик браузерный?
Вообще через Mozilla Thunderbird, но все остольные сообщения просматриваются нормально. С другими письмами таких косяков нет
Что никак не исправить? А то как то некрасиво смотрится.
Сделал все как описано. Gmail отправляет письма (правда логинится после того, как разрешил внутри почты это)
А вот яндекс и мэйл дают ошибку.
Письмо не отправлено. Ошибка: Autorization error
А кто знает, по какой причине не работает отправка от «Яндекс.Почта для домена»?
Все почтовые клиенты же норм работают, просто вместо логина указывается почтовый адрес целиком.
Для «родного» яндексовского адреса vasya@yandex.ru логином будет vasya
а для почты_для_домена admin@domain.com логином является целиком весь почтовый адрес.
Добрый день! Прошу прощения, если проглядел… а с помощью этого класса вложения к письму подцеплять можно?
C gmail отправляет, но вот только в качестве отправителя стоит ящик, с которого была авторизация. Т.е. отправителем не является тот, кто указан во FROM. Соответственно, если отвечать на такое письмо, то ответ будет на тот ящик, который и отправлял.
Здравствуйте. проблема возникла внезапно — Ошибка: E-mail didn’t sent
Не подскажете, где копать?
Почему выводит сообщение «E-mail didn’t sent», В чем может быть ошибка?
«От кого» если писать по-русски, то не читается. Кодировка остальных частей письма правильная.
Кто-нибудь разобрался с проблемой кодировки? Если письмо шлем через smtp Яндекса, имя отображается в неправильной кодировке, несмотря на заголовок charset utf-8.
Очень классный класс!
Евгений, большое спасибо!
Отлично работает!
А до этого через mail() отправлялись заявки на фонтан на сайте, поначалу работало, а на днях протестировал — не доходят письма!
Думаю, почему перестали приходить заявки, а все просто, онлайн-форма не работает. Выручили вы с этим классом!
С уважением,
Камиль
Спасибо, всё отлично работает!
(yandex.ru, хостинг timeweb, отправка с ящика, который «яндекс-почта для домена»).
Если надо «просто сообщение» без HTML (который может резаться на разных этапах) — text/plain вместо text/html в заголовке. (И в этом случае перенос на следующую строку «/r/n»).
Кто-то из комментаторов спрашивал откуда лучше отправлять — mail.ru, gmail.com или yandex.ru — такое чувство, что заметно лучше с yandex.ru. «Никаких артефактов». С майлру и гуглом возможны танцы с бубном.
Автор блога: в проверочном коде когда люди постят комментарии — есть символ «О» (буква), который выглядит как «ноль». Во избежание лишних «неправильно введен код» — можно бы удалить из числа выводимых символов и О, и ноль.
Все доступы повключал, и защиту гугла выключил и все равно не пускает gmail
Письмо не отправлено. Ошибка: Autorization error
Добрый день.
Подскажите пожалуйста. Отправляю через gmail. Тело письма беру из файла с помощью file_get_contents + в переменную добавляю еще строки. Письмо отправляется, но письмо получаю одной строкой, теряются все пустые строки, переходы на другие строки и т.д. Как можно это поправить? Спасибо.
«Письмо не отправлено. Ошибка: 0». Подскажите значение ошибки.
Я столкнулся с такой же проблемой. Проблема решилось, когда я откатил php с версии 5.6 на 5.4. Специально проверил, на php 5.5 нормально работает, а вот с php 5.6 почему то нет.
Здравствуйте, а можна как-то зашифровать пароль, в MD5 напиример?
Спасибо
Замечательно работает! Спасибо большое за класс.
Доброго дня.
Подскажите плз, в чем может быть сложность отправки почты через класс с почтовика rambler.
постоянно выдает ошибку авторизации. сервер/порт/логин/пароль в норме.
есть отдельная хитрость в авторизации на рамблере?
Огромное спасибо за труд. Реально решение из коробки! С мейл.ру — корп.ящиком работает на ура.
Полезно, спасибо!
К сожалению не доходят CC и BCC копии.
Спасибо большое! У меня на сайте есть воостановление паролья, а как для этого можно использовать вашу функцию, чтобы автоматический было все?
А у меня не работает
Ошибка: 111.Connection refused
и с Майлом.ру и с Яндексом
Здравствуйте.
У меня на сайте вакансий есть рассылка еженедельных новостей для работодателей. Уже не знаю чем их привлечь. Размещение вакансий сделал бесплатное, на любой срок. Но поток на сайте небольшой. Почитал про рассылки по подпискам. Понял, что я могу для зарегистрировавшихся делать рассылку полезной информации. Отправляю стандартным sendmail с хостинга. Но часто почта попадает в спам.
Сейчас пробую вашим классным классом — думаю дело пойдет веселее. Спасибо!
Код вполне рабочий и полезный, вот может кому пригодится модифицированный (автор может в тему добавить если посчитает нужным, что бы люди могли пользоваться), можно отправлять не только одно письмо но и файлы прикреплять к письму:
// пример использования
require_once «SendMailSmtpClass.php»; // подключаем класс
Спасибо большое, за полезное дополнение. Добавил в текст статьи 🙂
Отправка электронных писем с помощью библиотеки 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.