отправка электронной почты из скрипта Python 3.4 БЕЗ включения «менее безопасных приложений» в gmail

я хотел бы отправить почту с помощью скрипта Python 3.4 с моего адреса Gmail. я использую следующий код:

import smtplib  

def sendmail():  
    sender='[email protected]'  
    receiver=['[email protected]']  
    message='text here'  
    try:  
        session=smtplib.SMTP('smtp.gmail.com',587)  
        session.ehlo()  
        session.starttls()  
        session.ehlo()  
        session.login(sender,'mypassword')  
        session.sendmail(sender,receiver,message)  
        session.quit()  
    except smtplib.SMTPException:  
        print('Error, can not send mail!')

если я «разрешу менее безопасные приложения» в своей учетной записи gmail, скрипт работает нормально. однако, если я отключу «менее безопасные приложения», это не сработает (я получаю электронное письмо с предупреждением от Google с «заблокированной попыткой входа в систему»). я хотел бы изменить свой код, чтобы иметь возможность отправлять почту, не включая эту вещь.

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


person Wanek T    schedule 13.04.2015    source источник


Ответы (1)


Со страницы поддержки "Разрешение небезопасным приложениям доступа к вашему аккаунту"

Google может блокировать попытки входа из некоторых приложений или устройств, которые не используют современные стандарты безопасности.

Логин/пароль не является современным механизмом аутентификации. Вам следует внедрить SASL XOAuth2.

person rds    schedule 13.04.2015
comment
я вижу. это несколько помогло решить проблему. может кто-нибудь порекомендовать хороший учебник по реализации oauth 2 в python? Спасибо! - person Wanek T; 17.04.2015
comment
См. объявление googleappsdeveloper.blogspot.ch/2014/10/. - person rds; 18.04.2015
comment
Никогда не использовал его, но Gmail выпустил библиотеку для XOAUTH2 code.google.com. /p/google-mail-oauth2-tools - person rds; 18.04.2015