-1

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

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

由于这个程序是测试用户名/密码组合的存在,所以不需要知道Gmail中的任何邮件内容。

该程序的输入是用户名密码

该程序的输出是

登录成功

或者

登录失败

登录失败可能是:

  1. 现有用户名+错误密码
  2. 不存在的用户名

我的想法是先登录 Gmail。之后,当登录失败时,gmail网页会在登录网页上显示特定的消息。我可以解析网页内容并检查它是否有特定的消息。

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

4

3 回答 3

2

这是一个想法:

您为什么不尝试从该帐户发送电子邮件并查看它是否发送?您可以smtplib在 python 标准模块中执行此操作。这里有代码示例。您必须查看模块的文档,但如果登录失败,它似乎会引发异常,其中应该包含您感兴趣的详细信息。

在编辑中:

我挖出我写的这段代码就是为了做到这一点。您需要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()

顺便说一句,我不太清楚为什么这个问题被否决了,甚至除了你问错问题的事实之外,还有什么被否决。

于 2013-01-25T15:17:32.957 回答
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")
于 2018-03-02T19:51:18.640 回答
-1

这种事情就像是被禁止的,这就是创建 OAuth 或 OpenID 之类的东西的原因。这种东西允许用户在输入用户名密码的情况下登录。所以要小心。

于 2013-01-25T15:02:45.053 回答