使用Python自动登录Gmail

时间:2013-01-25 14:56:25

标签: python gmail

我正在编写一个可以登录Gmail的Python程序。

此程序的目的是检查用户名/密码组合是否存在且是否正确。

由于此程序用于测试用户名/密码组合的存在,因此无需知道Gmail中的任何邮件内容。

此计划的输入是用户名密码

该程序的输出是

  

成功登录

  

登录失败

登录失败可能是:

  1. 现有用户名+错误密码
  2. 不存在的用户名
  3. 我的想法是先登录Gmail。之后,当登录失败时,gmail网页将在登录网页上显示特定消息。我可以解析网页内容并检查它是否有特定的消息。

    但是,我仍然不知道如何在Python中登录Gmail。请让我知道可以使用哪个模块或者给我一小段示例代码。

3 个答案:

答案 0 :(得分:2)

这是一个想法:

为什么不尝试从帐户发送电子邮件并查看是否发送?您可以在python标准模块中使用smtplib执行此操作。有代码示例here。您将不得不查看模块的文档,但如果登录失败,它看起来像是一个例外,它应包含您感兴趣的详细信息。

编辑:

我挖出了我编写的这段代码来做到这一点。您需要在底部的位置放置try/catch以检测错误的登录凭据。

# Subject
now = dt.datetime.now().ctime()
subject = 'Change to system on %s' % now

# Body
body = 'Subject: %s,\n' % subject
body += 'On %s, a change to the system was detected. Details follow.\n\n' % now

relevantFiles = list(set([x.file for x in relevantChunks]))
for file in relevantFiles:

    fileChunks = [x for x in relevantChunks if x.file == file]
    for chunk in fileChunks:
        body += '****** Affected file %s. ' % chunk.file
        <some other stuff>

server = smtp.SMTP(args.host) # host = smtp.gmail.com:<port> look this bit up
server.starttls()
server.login(args.username, args.password)
server.sendmail(args.sender, args.recipient, body)
server.quit()

顺便说一句,我不太清楚为什么这个问题被低估了,甚至不知道除了你提出错误的问题之外还要投票。

答案 1 :(得分:0)

试试这个:

from email.mime.text import MIMEText
import smtplib

msg = MIMEText("Hello There!")

msg['Subject'] = 'A Test Message'
msg['From'] = 'username@gmail.com'
msg['To'] = 'username@gmail.com'

s = smtplib.SMTP('smtp.gmail.com:587')
s.starttls()  ##Must start TLS session to port 587 on the gmail server
s.login('username', 'passsword') ##Must pass args gmail username & password in quotes to authenticate on gmail
s.sendmail('username@gmail.com',['username@gmail.com'],msg.as_string())

print("Message Sent")

答案 2 :(得分:-1)

这类事情就像禁止,这就是创建OAuth或OpenID之类的原因。此类内容允许用户登录而不输入用户名密码。所以要小心。

相关问题