12345678
AnonymousКАК СТАТЬ АВТОРОМ
Все потоки
Разработка
Администрирование
Дизайн
Менеджмент
Маркетинг
Научпоп
vllv
5 июл 2022 в 12:41
Полковнику никто не пишет. Отправка писем по SMTP после изменения политики Google. С примером на Python
2 мин
15K
Python
*
Google Chrome
Начало
Недавно 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}')
Письма, содержащие кириллицу, не отправятся.
Но если очень хочется
Просто оберните тему и текст в 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.
Буду очень благодарен, если вы в коментариях напишите ваши способы автоматического взаимодействия с электронной почтой. Наверняка, это кому-то очень поможет.
Если кому интересно, вот мой микросервис для отправки сообщений в телеграм бот и по электронной почте.
Теги: smtppythongoogleэлектронная почта
Хабы: PythonGoogle Chrome
13
Карма
0
Рейтинг
Vladimir Allenov @vllv
BE Python Developer
Github
Комментарии 14
HemulGM
5 июл 2022 в 13:34
Для этого есть инструкции самого гугла
Такое уже давно работает, например на mail.ru почтовых ящиках
+5
yarkovoy
6 июл 2022 в 07:12
Так есть у Яндекса. Но заставить работать не получилось. Письма не уходили по причине SPAM Rejected. Вот сейчас автор показал, как это сделать у гугла (как то я пропустил про двухфакторную авторизацию) и все сразу заработало.
0
ovitente
5 июл 2022 в 14:31
А я просто скажу спасибо за простой и рабочий пример решаемой задачи.
+7
Tanner
5 июл 2022 в 16:54
Это всё же с недавнего времени не работает. Авторизация теперь только через oAuth2. Или я что-то путаю?
-5
vllv
5 июл 2022 в 17:12
Все работает. Ты просто включи двухфакторную аутентификацию и появится возможность создавать пароли приложений.
+4
vllv
5 июл 2022 в 17:17
Ну и светить страницу с настройками безопасности, это ты лихо, конечно, придумал, дружище
+14
slavius
5 июл 2022 в 23:47
Обычно говорят "Честным людям нечего скрывать". Ну а оппоненты предлагают разместить номер телефона и карты. Ну вот и получилось... Посмотрим. Тут главное что-бы потом @Tanner рассказал - произошло что...
+1
Tuxman
6 июл 2022 в 06:51
А что он там, количество своих девайсов спалил?
-1
VaultVulp
6 июл 2022 в 08:50
Телефон, почту и секретный вопрос, ответ на который можно попробовать подобрать зная регион мобильного телефона и регулярные рейсы в Москву из этого региона, например.
+2
Dmitrii_Rudko
7 июл 2022 в 09:06
Еще и пароль за последние 12 лет ни разу не менялся.
0
old_bear
6 июл 2022 в 10:12
А может это такой хитрый honeypot?
0
des1roer
6 июл 2022 в 13:55
тоже недавно понадобилось. у гугла выключен режим разрешить меньше секюрности или как оно. с мейл.ру не взлетело, а вот яндекс - полет нормальный. там пароль ставится https://passport.yandex.ru/profile/ -> Пароли и авторизация -> Пароли приложений
0
JPEGEC
7 июл 2022 в 01:27
А в чем общий смысл подобного новшества от гугл? Почему просто не использовать авторизацию по обычному паролю от аккаунта?
0
Pinkbyte
7 июл 2022 в 09:06
Потому что гугл/mail.ru/yandex - это уже не давно не просто почтовики, это экосистемы. И утечка почтового пароля может больно ударить. Одного TLS для защиты бывает мало - downgrade-атака например. А там внутри PLAIN или LOGIN в качестве метода авторизации(мало кто заморачивается на CRAM-MD5). То есть, по факту правильно сделанный base64 от логина/пароля. Надо ли рассказывать что с этим base64-хэшем делать? :-)
Ну а требование двухфакторки для заведения дополнительного пароля - это дань современным реалиям. Хотя требовать для двухфакторки ТОЛЬКО номер телефона(привет mail.ru), похоронив возможность использования TOTP или делать свой, несовместимый ни с чем алгоритм OTP(привет Steam и Yandex) - это тоже то еще чудачество(а уж на букву "м" или нет - пусть каждый сам для себя решает)
0
Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.
Публикации
ЛУЧШИЕ ЗА СУТКИ
ПОХОЖИЕ
DRoman0v
22 часа назад
Ремонт игрового ноутбука с прогаром в плате без схемы: возвращаем к жизни «похороненный» сервисными центрами CLEVO P970
7 мин
6.1K
+70
28
23
+23
MiraclePtr
15 часов назад
Современные технологии обхода блокировок: V2Ray, XRay, XTLS, Hysteria и все-все-все
18 мин
6.4K
+55
148
31
+31
Levitanus
17 часов назад
Эргономично, дёшево, сердито
Простой
11 мин
7.5K
Кейс
+42
37
27
+27
Sagidullin
12 часов назад
Loongson 3D5000: архитектура и возможности 32-ядерного серверного процессора из Китая
4 мин
7.5K
+40
15
43
+43
ntsaplin
6 часов назад
Как не надо открывать ИТ-бизнес в Казахстане: наш пример
Простой
4 мин
6.3K
Кейс
+35
20
19
+19
Показать еще
ЧИТАЮТ СЕЙЧАС
ChaosGPT (Auto-GPT на базе GPT-4) получил доступ в интернет и пытается понять, как можно уничтожить человечество
2.8K
13
+13
Я анимирую тентакли и мне платят за это деньги
35K
80
+80
Как не надо открывать ИТ-бизнес в Казахстане: наш пример
6.3K
19
+19
Странные языки программирования
3.8K
11
+11
Строка на 1,5 гигабайта
24K
47
+47
ИСТОРИИ
author-logo
Дайджест событий для IT HR в апреле
author-logo
Сезон нейроарта на Хабре
author-logo
Туториалы по Kubernetes
author-logo
Часы с ChatGPT: время в стихах
author-logo
Читай и худей
author-logo
Страшен ли Kubernetes?
author-logo
Полезная подборка о зрении
author-logo
Тренируйся: физкульт-подборка
author-logo
Сеньоры — очень странные люди
Ваш аккаунт
Войти
Регистрация
Разделы
Статьи
Новости
Хабы
Компании
Авторы
Песочница
Информация
Устройство сайта
Для авторов
Для компаний
Документы
Соглашение
Конфиденциальность
Услуги
Корпоративный блог
Медийная реклама
Нативные проекты
Образовательные программы
Стартапам
Спецпроекты
Настройка языка
Техническая поддержка
Вернуться на старую версию
© 2006–2023, Habr