Отправка почты через smtp используя esp8266.

Отправка почты через smtp используя esp8266. 

Сегодня рассмотрим такой интересный пример, как отправить сообщение на почту. Это может пригодиться например, как в моём примере, при превышении заданного порога температуры, а ещё для обнаружении движения, открытии окна и двери, и много ещё чего.
Если интересно, то милости просим к просмотру.
Отправка письма будет сделана при помощи SMTP. Также рассказано как отправлять почту при двухфакторной аутентификации. Отправка электронной почты это необходимый процесс при разработке электронных устройств, применяемых при автоматизации процесса. Например находясь дома вы будете получать электронные письма например с дачи, о состоянии и температуре.
Ещё рассказано про коды ошибок SMTP сервера при отправке почты. В видео рассказано как работать с SMTP сервером от Google, с почтой Gmail, но этот пример работает и с SMTP Yandex и Mail. Разницы никакой достаточно только прописать,  smtp.gmail.com   smtp.yandex.ru    smtp.mail.ru

У меня уже было одно видео как отправлять почту, но для него нужен был локальный сервер и отправка происходила при помощи скрипта на php.
Здесь же нам ничего дополнительно устанавливать не надо. Только плата ESP, датчик с которым будем работать и рабочая почта на любом из серверов. Я буду рассказывать на примере GMAIL, а вы можете работать с Яндекс или с MAIL.
Сначала как всегда смотрим что будет, а потом будем разбираться как это сделать.
В этом примере я показал как отправлять сообщение на почту при превышении температуры. 
В скетче я установил максимальную температуру в 30 градусов. 
Будем смотреть в COM порту и в почте. Сейчас выводится текущая температура. Как только она достигнет 30 градусов, то на почту будет отправлено сообщение.
В выводе сообщения я убрал лишнюю информацию, а оставил только самое нужное. Это номер сообщения, Статус, дату и время отправки, Имя получателя, и тему письма.
В скетче я также прописал, что если температура всё ещё превышает 30 градусов, отправлять следующее сообщение через 1 минуту. Это сделано для видео, в жизни этот интервал надо увеличить. Какой смысл получать так часто сообщения.
Текущая температура продолжает выводиться каждые 3 секунды.
Вот прошла 1 минута, и так температура всё ещё превышает максимум. То отправлено новое сообщение, а мы видим, что у нас теперь отображается Сообщение номер 2.
Давайте откроем одно из писем и посмотрим, что там внутри.
Помимо уже изученных, заголовка, темы, и адреса отправителя, мы видим текст, что прописали в скетче и температуру при которой было отправлено сообщение.
В другом письме всё тоже самое, только другая температура.

Сейчас, температура упала и писем счастья больше нет. И это здорово, значит у нас всё хорошо. И в скетче и в жизни. Кто с этим согласен, тот пусть ставит лайк.
Теперь я надышу на 30 градусов и посмотрим, придёт ли новое сообщение, а потом будем разбирать скетч.

Рассмотрим скетчи. Их будет три.
Первый – это скетч отправки письма.
Второй – подключение датчика температуры DHT11
Третий – объединим всё вместе и будем отправлять на почту сообщение если температура превысила порог допустимого.

Это пример отправки письма.
Для начала вам надо скачать и установить библиотеку работы с почтовым клиентом. Вы можете скачать её с гитхаба, а можете установить из архива.
Архив с примерами и библиотекой, как всегда будет на моём сайте, ссылка на него будет в описании.

Здесь мы пишем пароль и логин от своей WIFI сети.
Теперь пишем адрес SMTP сервера с которого будем отправлять почту. Я буду отправлять с gmail сервера, но можно было бы отправлять и с Yandex или Mail.

Укажем порт SMTP сервера. Так как сейчас везде применяется технология SSL то порт надо указывать 465.
А здесь указываем действующий адрес и пароль к своей почте. 
Я не буду всё  озвучивать. Кому интересно, прочитаете сами. Я по возможности прокомментировал все основные строчки кода.

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

Вначале мы видим, что соединение прошло успешно, и вам присвоен IP адрес.
Дальше идёт информация о соединении с SMTP сервером.

Теперь давайте посмотрим какие могут быть ошибки при работе с SMTP сервером.
Если всё хорошо, то у вас будут коды 220 и 250.

Рассмотрим само отправляемое письмо.
В начале идёт тема письма. Затем само сообщение. А вот так выглядит письмо пришедшее на почту. 
Правда – это письмо уже из третьего скетча. Но думаю, что и так всё понятно.

А вот так выглядит код и сообщение об отправке, дате, времени и доставке письма.

Скетч номер два, простой, поэтому мы не будем на нём останавливаться. Думаю, как подключить датчик температуры знает каждый. А если нет, то посмотрите мои видео на канале. Там очень подробно всё объяснено. Здесь нам главное знать, что датчик работает и мы получаем температуру. 
Для этого подключаем датчик на выход D1 и смотрим в COM порту температуру.
Если всё работает, то переходим к следующему скетчу, где объединим всё вместе.

Третий скетч.
Я рассмотрю только самое основное, так как я уже рассказал про то как отправляются письма.
Эти два блока отвечают, подключение библиотек для отправки почты и для работы с датчиком температуры.

Про эту часть кода я уже рассказывал вначале. Здесь ничего нового не прибавилось.

Эта строка отвечает за вывод отладочной информации про которую я рассказывал ранее. Отключить её можно написав 0 в скобках, а включить написав 1.

Здесь я написал условие, при котором, если температура больше или равна 30 градусам отправить письмо, потом подождать 1 минуту и если температура всё ещё выше 30 градусов, то отправить повторное письмо.

Для того чтобы письма приходили, вам надо войти в свой аккаунт и отключить двухэтапную аутентификацию.
Я рассмотрю 2 способа. Первый это когда она отключена и второй когда включена.
Видим, что здесь она выключена, но это ещё не всё. Теперь надо дать доступ не надёжным приложениям.
Это все приложения которые не относятся к гуглу. 
Нажимаем на кнопку выключено и разрешаем работу с небезопасными приложениями. Переходим обратно и видим, что теперь здесь всё включено. all inclusive

Теперь рассмотрим второй способ. Также заходим в аккаунт. Нажимаем на Безопасность и видим, что здесь двухэтапная аутентификация включена.
Нажимаем на неё и у нас запрашивают пароль для входа в аккаунт, но это ещё не всё. Теперь вам на телефон должен прийти код из набора цифр. Вам надо нажать на такую же цифру, что на экране.
После этого нам открывается вот такая страница, где можно выключить аутентификацию.
Я отключать не буду, так как у меня есть другой аккаунт, на котором я и буду тестить свой пример.
Теперь также как в первом примере даёте доступ к ненадёжным приложениям и всё готово. Можно переходить к изучению скетча.
 

1. Изучаем мир ESP8266: Введение и Основные Характеристики
2. Варианты ESP8266: Сравнение разновидностей
3. Многофункциональная ESP-12: Описание и особенности
4. NodeMCU: Универсальная плата для разработки на ESP8266
5. ESP8266 и Wi-Fi: Управление умным домом
6. IoT и ESP8266: Связь с Интернетом вещей
7. ESP8266 и Arduino: Идеальное сочетание
8. Программирование на ESP8266: Arduino IDE и MicroPython
9. Беспроводная передача данных с ESP8266
10.Примеры проектов с ESP8266