2014-06-05 6 views
-1

저는 현재 라즈베리 파이 파이썬 스크립트를 읽고 전자 메일 본문 (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

SSCCE를 제공하십시오. http://sscce.org/ 예제가 너무 길어 대부분 독자에게 가치가 없습니다. – jrennie

답변

0

는 재치있는 부분으로 프로그램을 분할합니다.

  1. 당신이 그들에게

을 읽을

  • 메시지에서 읽고 싶은
  • 추출물 부품 IMAP에서 메시지를 읽고 나는 의심 문제는 2

  • 0

    아마 시도에만 단계에있다 len (msg_data) 및 len (response_part)을보고 더 많은 섹션이 숨어 있는지 확인할 수 있습니다.

    관련 문제