2017-05-04 60 views
0

我有一些代码从我的gmail帐户中读取最旧的电子邮件,但我希望它能够读取每封电子邮件。我对python非常陌生,上周我开始学习它。我有很多关于C++的经验,所以我知道我需要什么循环来帮助在python中实现它。什么我添加到此代码,以便它读取每封电子邮件?

我的代码所做的是读取最旧的电子邮件,然后创建一个int来保存主题中的数字,然后从1到10获取一个随机数并打印电子邮件中主题中的数字是否等于随机数。

我希望程序循环并为我的收件箱中的每封电子邮件执行此操作。

import poplib 
import string, random 
import StringIO, rfc822 
import logging 
import random 

SERVER = "pop.gmail.com" 
USER = "XXXXXXXXXXXXXX" 
PASSWORD = "XXXXXXXXXXXX" 

# connect to server 
logging.debug('connecting to ' + SERVER) 
server = poplib.POP3_SSL(SERVER) 
#server = poplib.POP3(SERVER) 

# login 
logging.debug('logging in') 
server.user(USER) 
server.pass_(PASSWORD) 

# list items on server 
logging.debug('listing emails') 
resp, items, octets = server.list() 

# download the first message in the list 
mail = imaplib.IMAP4_SSL(SMTP_SERVER) 
mail.login(FROM_EMAIL,FROM_PWD) 
mail.select('inbox') 

type, data = mail.search(None, 'ALL') 
mail_ids = data[0] 

id_list = mail_ids.split() 
first_email_id = int(id_list[0]) 
latest_email_id = int(id_list[-1]) 
for i in range(latest_email_id, first_email_id, -1): 
    id, size = string.split(items[0]) 
    resp, text, octets = server.retr(id) 

# convert list to Message object 
    text = string.join(text, "\n") 
    file = StringIO.StringIO(text) 
    message = rfc822.Message(file) 

# output message 
    print(message['From']), 
    print(message['Subject']), 
    print(message['Date']), 
#print(message.fp.read()) 
    mynumber = message['Subject'] 
    myint = int(mynumber) 

    print "Let's play a game! I'll choose a number between 0 and 10. Try to guess it!" 

    python_number = random.randint(0,10) 

    if python_number == myint: 
     print "You won! My number was " + str(python_number) 
    else: 
     print "You loose! My number was " + str(python_number) 
+1

在'#将下列列表中的第一条消息下载到for循环后面放置所有内容。我相信你应该迭代'物品' – wpercy

+0

有人能告诉我我的问题有什么问题吗?我在这个网站上看到了很多基本的问题,没有付出努力,他们得到了很多答案和一堆赞成票。 – math4782

+0

@wpercy,我编辑了我的问题,我在正确的轨道上? – math4782

回答

1

你想要做的是什么,而不是获得的第一项

id, size = string.split(items[0]) 

你想获得的所有项目:

for item in items: 
    id, size = string.split(item) 

然后缩进代码以下这一所以它运行对于每个item in items

import poplib 
import string, random 
import StringIO, rfc822 
import logging 
import random 

SERVER = "pop.gmail.com" 
USER = "myEmail" 
PASSWORD = "myPassword" 

# connect to server 
logging.debug('connecting to ' + SERVER) 
server = poplib.POP3_SSL(SERVER) 

# login 
logging.debug('logging in') 
server.user(USER) 
server.pass_(PASSWORD) 

# list items on server 
logging.debug('listing emails') 
resp, items, octets = server.list() 

for item in items: 
    #For each message 
    id, size = string.split(item) 
    resp, text, octets = server.retr(id) 

    # convert list to Message object 
    text = string.join(text, "\n") 
    file = StringIO.StringIO(text) 
    message = rfc822.Message(file) 

    # output message 
    print(message['From']), 
    print(message['Subject']), 
    print(message['Date']), 
    #print(message.fp.read()) 
    mynumber = message['Subject'] 
    myint = int(mynumber) 

    print "Let's play a game! I'll choose a number between 0 and 10. Try to guess it!" 

    python_number = random.randint(0,10) 

    if python_number == myint: 
     print "You won! My number was " + str(python_number) 
    else: 
     print "You loose! My number was " + str(python_number) 
+0

谢谢,它的工作原理 – math4782

相关问题