我如何计算每个打印电子邮件标题的循环?

时间:2014-11-11 22:15:40

标签: python python-3.x email-headers

基本上,这是我的代码,用于在.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 ++放在循环中,那么所有这一切都会计算代码重复的次数。我该怎么做?

3 个答案:

答案 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()