Python的smtplib模块违反了Gmail的使用条款

时间:2016-08-11 12:31:32

标签: python email gmail policy smtplib

如何在使用Python smtplib时避免违反Gmail的使用条款?

我想使用Python发送内部电子邮件。使用Gmail API进行了2天的战斗后,我放弃了。然后我找到了smtplib模块,看起来简单而有前途。

按照示例here,我编写了一小段Python代码:

import smtplib

# Details of where to send FROM
emailUser     = 'an.account.I.made.just.for this.test@gmail.com'
emailPassword = 'password123'

# Send the following message to an address...
message       = '[ I am email content ]'
toAddress     = 'test.victim@gmail.com'

# 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()

我执行了这个脚本。看起来谷歌的算法必须将此解释为已故意发送,并立即关闭我的帐户!这是公平的,因为我确信smtplib很容易被滥用。但是,我有诚实的意图,但我不知道如何解决这个问题:如何避免在使用Python smtplib时违反Gmail的使用条款?

1 个答案:

答案 0 :(得分:1)

可能是因为你不加区分地与EHLO建立联系,你应该使用HELO。

如果服务器支持EHLO,则客户端可以使用EHLO而不是HELO作为其第一个请求。 另一方面,如果服务器不支持EHLO,并且客户端发送EHLO,则服务器将拒绝EHLO。然后客户必须回到HELO。

有些服务器在看到EHLO时会断开连接。如果客户端发现EHLO和HELO都未被接受,例如因为连接已关闭,那么它必须建立新连接并以HELO开始。