12345678

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


Report Page