Отправка электронной почты через Gmail через приложение Python - PullRequest
3 голосов
/ 15 марта 2012

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

FROMADDR = "myemail@gmail.com"
LOGIN    = FROMADDR
PASSWORD = "mypass"
TOADDRS  = "varis81@hotmail.com"
msg = "Test message"
server = smtplib.SMTP('smtp.gmail.com', 587)
server.set_debuglevel(1)
server.ehlo()
server.starttls()
server.login(LOGIN, PASSWORD)
server.sendmail(FROMADDR, TOADDRS, msg)
server.quit()
print "E-mail succesfully sent"

Я получаю сообщение:

socket.error: [Errno 10060] A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond

Я пробовал разные порты, но он также не работает. Я также пробовал hotmail, но вызывает то же самоеЯ использую Python 2.7 (не спрашивайте :)) на компьютере под управлением Windows 7, который разрабатывается на Eclipse с использованием PyDev.

Любая помощь будет отличной!Заранее спасибо.

Ответы [ 2 ]

1 голос
/ 15 марта 2012

Я использую ту же конструкцию на одном из моих серверов.Мой код ниже.

Единственное отличие - это дополнительные .ehlo() после '.starttls () `.Это не должно быть проблемой;из RFC :

5.2 Result of the STARTTLS Command

The client SHOULD send an EHLO command as the first
command after a successful TLS negotiation.

Согласно RFC, сервер не должен разрывать соединение, если клиент не отправляет ehlo после starttls, но Google может быть большеограничительный на своем SMTP-сервере.Я бы проверил это первым.(Я видел, как провайдеры ужесточают условия такого рода, чтобы уменьшить количество спама, см., Например, рецензирование Mailinator 2007 .)

Также это могут быть отфильтрованные порты - попробуйте запустить код вREPL и подтвердите, какая строка является исключением, если это connect(), вы будете знать, что это сеть.Если это после, скорее всего, вы используете smtplib.

. Заметим, что я также иногда сталкивался с нечистыми остановками, что приводило к попытке / исключению около .close().

import smtplib
s = smtplib.SMTP()
s.connect("smtp.gmail.com")
s.ehlo()
s.starttls()
s.ehlo()
s.login("from@gmail.com", "frompass") 
s.sendmail("fromname@gmail.com", toAddr, bytes)
try:
    s.close()
except: pass
1 голос
/ 15 марта 2012

Ну, так как я пока не могу оставлять комментарии, мне придется попытаться ответить ..

Судя по этому: Python SMTP Errno 10060 Может быть, тайм-аут поможет?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...