Python没有阅读整个电子邮件正文

时间:2014-06-05 21:06:25

标签: python email raspberry-pi text-to-speech

我目前有一个覆盆子pi python脚本阅读,然后说一个电子邮件正文(TTS)。我有一个问题,python只是阅读和说出电子邮件正文的第一行。我希望阅读和说出整个电子邮件正文(多行)。以下是我目前设置的编码。我已经被困了一段时间,希望得到你的帮助。


import imaplib
import email
import os
import RPi.GPIO as GPIO
import time

def extract_body(payload):
   if isinstance(payload,str):
     return payload
else:
    return '\n'.join([extract_body(part.get_payload()) for part in payload])

conn = imaplib.IMAP4_SSL("imap.gmail.com", 993)
conn.login("username here", "Password here")
conn.select()
typ, data = conn.search(None, 'UNSEEN')
try:

    GPIO.setmode(GPIO.BOARD)
    for num in data[0].split():
        typ, msg_data = conn.fetch(num, '(RFC822)')
        for response_part in msg_data:
            if isinstance(response_part, tuple):
                msg = email.message_from_string(response_part[1])
                subject=msg['subject']                   
                print(subject)
                payload=msg.get_payload()
                body=extract_body(payload)
                print(body)
        cmd_string = '/home/pi/speech.sh {}.'.format(body)
        os.system(cmd_string)


        typ, response = conn.store(num, '+FLAGS', r'(\Seen)')
finally:
    try:
        conn.close()
    except:
        pass
    conn.logout()

1 个答案:

答案 0 :(得分:0)

也许可以尝试查看len(msg_data)和len(response_part),看看是否有更多的部分隐藏在那里。