基本上,这是我的代码,用于在.mbox文件中提取和打印100多封电子邮件的所有电子邮件标题。
import mailbox
import pprint
f=open("results.txt","w")
mbox = mailbox.mbox('c:\documents and settings\student\desktop\mail\mailall.mbox')
for msg in mbox:
pprint.pprint(msg._headers, stream=f)
f.close()
我想知道有多少封电子邮件标题为“To:example@example.com”。 (换句话说,计算发送到地址example@example.com的电子邮件数量。)
如果我在循环外键入count = 0,并将count ++放在循环中,那么所有这一切都会计算代码重复的次数。我该怎么做?
答案 0 :(得分:0)
我猜你可以使用msg
变量访问邮件发送到的电子邮件地址,这样你就可以创建一个方法来为你做匹配,只增加并写入在这种情况下results.txt
文件:
import mailbox
import pprint
email = "example@example.com"
count = 0
mbox = mailbox.mbox('c:\documents and settings\student\desktop\mail\mailall.mbox')
with open("results.txt", "w") as result_file:
# define a method that allows you to check if the message was sent to an address
if message_sent_to(msg, email):
count += 1
pprint.pprint(msg._headers, stream=f)
print "%d message sent to %s" % (count, email)
答案 1 :(得分:0)
像
这样的东西count = 0
for msg in mbox:
pprint.pprint(msg._headers, stream=f)
if "To: example@example.com" in msg:
count += 1
基本上你想增加循环内的计数,但只有当msg包含你正在寻找的值时才会增加。
答案 2 :(得分:0)
试试这个:
import mailbox
import pprint
count = 0
f = open("results.txt","w")
mbox = mailbox.mbox('c:\documents and settings\student\desktop\mail\mailall.mbox')
for msg in mbox:
if "To: example@example.com" in msg:
count += 1
pprint.pprint(msg._headers, stream = f)
f.close()