我目前有一个覆盆子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()
答案 0 :(得分:0)
也许可以尝试查看len(msg_data)和len(response_part),看看是否有更多的部分隐藏在那里。