2016-08-11 4 views
0

Как я могу избежать нарушения условий использования Gmail при использовании Python smtplib?Модуль smtplib Python, нарушающий условия использования Gmail

Я бы хотел отправить внутренние письма с помощью Python. После двух дней борьбы с API Gmail я сдался. Затем я нашел модуль smtplib, который выглядел простым и перспективным.

Следуя примеру here, я написал этот небольшой блок кода Python:

import smtplib 

# Details of where to send FROM 
emailUser  = 'an.account.I.made.just.for [email protected]' 
emailPassword = 'password123' 

# Send the following message to an address... 
message  = '[ I am email content ]' 
toAddress  = '[email protected]' 

# Define the HEADER (to, from, and subject) 
header = """ 
    To: %s 
    From: %s 
    Subject: Python SMTPLIB Test 
""" 
header = header % (toAddress, emailUser) 

# [ Don't know what this does ] 
smtpserver = smtplib.SMTP("smtp.gmail.com",587) 
smtpserver.ehlo() 
smtpserver.starttls() 
smtpserver.ehlo 

# Use User/Password credentials to send email 
smtpserver.login(emailUser, emailPassword) 
smtpserver.sendmail(emailUser, toAddress, message) 

smtpserver.close() 

я выполнил этот сценарий. Похоже, алгоритмы Google должны были интерпретировать это как отправленные с плохими намерениями и незамедлительно закрыли мою учетную запись! Это справедливо, так как я уверен, что smtplib можно злоупотреблять довольно легко. Тем не менее, у меня есть честные намерения, но я не знаю, как обойти эту проблему: как я могу избежать нарушения условий использования Gmail при использовании Python's smtplib?

ответ

1

Возможно, это связано с тем, что вы без разбора соединяетесь с EHLO, вы должны использовать HELO.

Если сервер поддерживает EHLO, клиент может использовать EHLO вместо HELO в качестве своего первого запроса. С другой стороны, если сервер не поддерживает EHLO, а клиент отправляет EHLO, сервер будет отклонять EHLO. Затем клиент должен вернуться к HELO.

Есть несколько серверов, которые отключаются, когда видят EHLO. Если клиент обнаружил, что ни EHLO, ни HELO не были приняты, например, потому что соединение было закрыто, тогда он должен установить новое соединение и начать с HELO.

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