【问题标题】:reading mails using python使用python阅读邮件
【发布时间】:2009-12-01 18:03:46
【问题描述】:

如何使用 python 从我的邮箱中读取邮件??

import getpass, imaplib
M = imaplib.IMAP4('IMAP4.gmail.com:993')
M.login(getpass.getuser(), getpass.getpass())
M.select()
typ, data = M.search(None, 'ALL')
for num in data[0].split():
    typ, data = M.fetch(num, '(RFC822)')
    print 'Message %s\n%s\n' % (num, data[0][1])
M.close()
M.logout()

这是我的代码.. 但是当我执行它时它的抛出错误:

Traceback (most recent call last):
  File "E:/jagdish/python progs/readmail.py", line 2, in <module>
    M = imaplib.IMAP4('IMAP4.gmail.com:993')
  File "C:\Python25\lib\imaplib.py", line 163, in __init__
    self.open(host, port)
  File "C:\Python25\lib\imaplib.py", line 230, in open
    self.sock.connect((host, port))
  File "<string>", line 1, in connect
gaierror: (11001, 'getaddrinfo failed')

谁能帮我解决这个问题???

【问题讨论】:

    标签: python email gmail imap


    【解决方案1】:

    三个问题:

    1. 主机名是imap.gmail.com,而不是imap4.gmail.com
    2. IMAP4 构造函数采用两个参数:主机和端口(不以冒号分隔)
    3. Gmail 期望您使用 SSL

    所以:

    import imaplib
    M = imaplib.IMAP4_SSL("imap.gmail.com", 993)
    

    【讨论】:

    • 答案是:Gmail 希望您使用 SSL。像 SimonJ 说的那样使用 IMAP4_SSL() 函数。我最近使用 POP3 使用 GMail 完成了此操作。 IMAP 应该是一样的。
    • 因为默认的ssl端口是993,所以可以写成:M = imaplib.IMAP4_SSL("imap.gmail.com")
    【解决方案2】:

    该错误表示主机无法访问或不存在,您可以通过谷歌搜索“gaierror”来查找(它代表获取地址信息错误)。

    改用“imap.gmail.com:993”,如 here 所述。

    【讨论】:

      猜你喜欢
      • 2019-05-24
      • 1970-01-01
      • 1970-01-01
      • 2014-04-27
      • 1970-01-01
      • 2015-10-20
      • 2019-05-14
      • 1970-01-01
      • 2019-04-29
      相关资源
      最近更新 更多