2014-11-13 4 views
1

Я пытаюсь отправить электронную почту с моей учетной записью gmail с помощью python. Я уже прочитал много вопросов здесь и вокруг Интернета, но никто из них не решил мою проблему.Как отправить письмо через gmail с помощью python?

код, который я использую следующие (благодаря rosettacode), который очень похож на многие другие фрагменты кода, которые можно найти по этой теме:

def sendemail(from_addr, to_addr_list, cc_addr_list, 
       subject, message, 
       login, password, 
       smtpserver='smtp.gmail.com:587'): 
    header = 'From: %s\n' % from_addr 
    header += 'To: %s\n' % ','.join(to_addr_list) 
    header += 'Cc: %s\n' % ','.join(cc_addr_list) 
    header += 'Subject: %s\n\n' % subject 
    message = header + message 

    server = smtplib.SMTP(smtpserver) 
    server.ehlo() 
    server.starttls() 
    server.ehlo() 
    server.login(login,password) 
    problems = server.sendmail(from_addr, to_addr_list, message) 
    server.quit() 
    return problems 

Моя проблема заключается во время входа фаза. Она возвращает следующее сообщение об ошибке:

SMTPAuthenticationError: (534, '5.7.14 <https://accounts.google.com/ContinueSignIn?sarp=1&scc=1&plt=AKgnsbsMX\n5.7.14 Z4_8qLgwTbhS2CwFvVApFvRfpIS1Vbbfun6gHcf0D6jgSQ-ixMn79mf3AivveTs9IhYsgq\n5.7.14 pmrp157H4Vmk6-ybAC9u2d2lNMYyy5pdmociqeSxBBwFGEPGJKHKdJpSocx86gzG-im6V-\n5.7.14 hsOeMKiJRAuGZjHUprEwj8oABwLzWQ8vEzovpXk79M-i8cnFseW-PNLxLlsK21WaLHLKmZ\n5.7.14 Ll3tEgQ> Please log in via your web browser and then try again.\n5.7.14 Learn more at\n5.7.14 https://support.google.com/mail/bin/answer.py?answer=78754 dc8sm25406976wib.7 - gsmtp') 

Я последовал за предложенную ссылку и я нашел this answer, но я не знаю, если это может быть решением.

Итак, в чем проблема? Настройки моей учетной записи? Мой код?

ответ

2

Недавно Google ужесточил свою безопасность. Приложение, использующее имя пользователя/пароль, было отключено. Все пользователи по-прежнему могут повторно активировать это менее безопасное приложение в своих настройках безопасности, как вы читали в ссылке, которую вы указали в своем вопросе. Это единственное решение на данный момент.

Альтернативой может быть использование другого SMTP-сервера для отправки.

+0

Можно ли использовать другой SMTP-сервер для отправки писем из моей учетной записи gmail? Если да, то как? – boh

1

Сообщение об ошибке вы цитируете говорит

[..] Please log in via your web browser and then try again. 
5.7.14 Learn more at 
5.7.14 https://support.google.com/mail/bin/answer.py?answer=78754 

Это уже обсуждалось в server send emails using gmail smtp gets alerts.

Так что я бы сказал, что ваш код в порядке, и вы имеете дело с механизмом безопасности, специфичным для Google.

+0

Я не могу решить капчу, как предлагается в этом ответе, это будет автоматический сценарий. – boh

1

Вы можете включить Google's 2-step authentication, а затем сгенерировать пароль для вашего скрипта. Я делаю то же самое (у меня тоже есть аналогичный код, как и вы), и он отлично работает.

+0

Я предпочитаю не активировать двухэтапную аутентификацию, но спасибо за совет. – boh

Смежные вопросы