Полковнику никто не пишет. Отправка писем по SMTP после изменения политики Google. С примером на Python

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

Прежде чем перейти к статье, хочу вам представить, экономическую онлайн игру Brave Knights, в которой вы можете играть и зарабатывать. Регистируйтесь, играйте и зарабатывайте!

Начало

Недавно Google изменил политику по отношению к доступу к аккаунту из неизвестных источников. Давно приходили предупреждения, но я до последнего надеялся, что обойдется и не коснется меня. Наивный.

Докатилось до меня где-то в середине июня. Однажды, смотря логи одного из моих проектов, наткнулся на ошибку авторизации при попытке отправки электронного письма.

Переписывать все под новый протокол или менять домен не очень-то хотелось. Меня же все устраивало. Так что крупные изменения оставил на крайний случай.

Настройки Google аккаунта

Да, решение находится именно здесь. Все просто, хотя я дошел до этого не сразу и именно поэтому пишу эту статью заметку.

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

После этого, в Chrome нажимаем на “Manage your Accounts” →Безопасность. Ищем блок “Вход в аккаунт” и нажимаем на “Пароли приложений”.

Экран "Пароли приложений"
Экран "Пароли приложений"

В выпадашке “Приложение” выбираем “Другое”, вводим имя и, наконец, “Создать”.

В появившемся окне, на желтом фоне будет пароль.

Экран с паролем
Экран с паролем

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

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

Пример на Python

Далее следует простейший скрипт отправки. Я убрал все (отлов исключений, логирование, цикл попыток отправки и т.д.), кроме самой сути.

import smtplib as smtp

login = 'gmail почта, с которой будет производится отправка'
password = 'пароль, который мы получили выше'

server = smtp.SMTP('smtp.gmail.com', 587)
server.starttls()
server.login(login, password)

subject = 'какая-нибудь тема письма. может быть пустой'
text = 'основной текст письма. тоже можно оставить пустым'

server.sendmail(login, 'адрес получателя', f'Subject:{subject}\n{text}')

Письма, содержащие кириллицу, не отправятся. Но если очень нужно, то вот:

Hidden text

Просто оберните тему и текст в MIMEText.

import smtplib as smtp
from email.mime.text import MIMEText
from email.header import Header

login = 'gmail почта, с которой будет производится отправка'
password = 'пароль, который мы получили выше'

server = smtp.SMTP('smtp.gmail.com', 587)
server.starttls()
server.login(login, password)

subject = 'какая-нибудь тема письма. может быть пустой'
text = 'основной текст письма. тоже можно оставить пустым'

mime = MIMEText(text, 'plain', 'utf-8')
mime['Subject'] = Header(subject, 'utf-8')

server.sendmail(login, 'адрес получателя', mime.as_string())

Заключение

В этой статье заметке был рассмотен способ востановления возможности автоматической отправки электронных писем. И приведен пример скрипта на python.

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

Если кому интересно, вот мой микросервис для отправки сообщений в телеграм бот и по электронной почте.

Источник: https://habr.com/ru/post/675130/


Интересные статьи

Интересные статьи

Конечной задачей всей деятельности по созданию алгоритмов для обработки естественного языка (Natural Language Processing, NLP) является создание искусственного интеллекта (ИИ), который бы понимал чело...
Мы уже больше года публикуем в своих соцсетях интересные задачки по программированию, Data Science, аналитике и другим темам. За все это время мы неоднократно сталкивались с такими мыслями, когда план...
В процессе познания нейронных сетей я практически не увидел информации о том, чтобы кто-то приближался или хотя бы шёл к созданию сущности, похожей на настоящий ИИ. Большая часть задач, которые решают...
Хотя в среднем для каждодневных задач автоматизация не требуется, бывают случаи, когда она может быть необходима. Создание множества диаграмм, рисунков, таблиц и отч...
Предлагаем вашему вниманию подборку с ссылками на новые материалы из области фронтенда и около него. Читать дальше →