如何在使用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的使用条款?
答案 0 :(得分:1)
可能是因为你不加区分地与EHLO建立联系,你应该使用HELO。
如果服务器支持EHLO,则客户端可以使用EHLO而不是HELO作为其第一个请求。 另一方面,如果服务器不支持EHLO,并且客户端发送EHLO,则服务器将拒绝EHLO。然后客户必须回到HELO。
有些服务器在看到EHLO时会断开连接。如果客户端发现EHLO和HELO都未被接受,例如因为连接已关闭,那么它必须建立新连接并以HELO开始。