【问题标题】:NameError: name 'mail' is not definedNameError:名称“邮件”未定义
【发布时间】:2019-01-21 11:13:43
【问题描述】:

我对编程很陌生,我应该计算我的 inbos 使用 python 中未读电子邮件的数量。我收到一个名称错误,说“邮件”未定义。我也不确定逻辑。代码如下:

import imaplib

<!-- begin snippet: js hide: false console: true babel: false -->
import datetime
import email
import getpass


def readmail():
    mail = imaplib.IMAP4_SSL('imap.gmail.com', 993)
    mypassword = getpass.getpass("Password: ")
address = '@mail.com'
mail.login(address, mypassword)
now = datetime.date.today()
mail.select("inbox")
print("Checking for new e-mails for ", address, ".")
typ, messageIDs = mail.search(now, "UNSEEN")
messageIDsString = str(messageIDs[0], encoding='utf8')
listOfSplitStrings = messageIDsString.split(" ")
print (len(listOfSplitStrings))

【问题讨论】:

  • 请注意:阅读电子邮件是开始学习编程的一个糟糕的地方。 IMAP 和电子邮件要学习 30 多年的垃圾和垃圾才能有效地使用它,而且比他们在服务上看到的要复杂得多。
  • @Shruthi,您能否告诉我们所提供的答案是否解决了您的问题?如果是这样,您应该将其标记为已接受,否则它仍会显示在未回答的问题队列中。你问,有人回应——这就是论坛的运作方式
  • '@mail.com'不可能是有效的电子邮件地址或帐户名。

标签: python gmail imap python-3.7


【解决方案1】:

修复代码缩进

import imaplib
import datetime
import email
import getpass

def readmail():
    mail = imaplib.IMAP4_SSL('imap.gmail.com', 993)
    mypassword = getpass.getpass("Password: ")
    address = '@mail.com'
    mail.login(address, mypassword)
    now = datetime.date.today()
    mail.select("inbox")
    print("Checking for new e-mails for ", address, ".")
    typ, messageIDs = mail.search(now, "UNSEEN")
    messageIDsString = str(messageIDs[0], encoding='utf8')
    listOfSplitStrings = messageIDsString.split(" ")
    print (len(listOfSplitStrings))

if __name__=="__main__":
    readmail()

【讨论】:

  • 你可能想要添加一个 __main__ 守卫来分类这个函数;因为就用户而言,这不会做任何事情。
  • 你丢失了import imaplib,毫无疑问是因为 OP 的代码存在一些格式问题。
  • @tripleee 谢谢,这样做了,是的,OP 的代码有格式问题。现在答案应该很好了
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-01-24
  • 1970-01-01
  • 1970-01-01
  • 2013-05-20
  • 1970-01-01
  • 2021-04-15
相关资源
最近更新 更多