2017-09-04 6 views
-1

이메일에서 날짜를 구문 분석 안녕하세요 파이썬 2.6 여기에 포함 된 전자 메일에서 날짜를 파싱 문제는 코드의이 : 나는 메일에서 날짜 시간이 동안 오류가파이썬 2.6

typ_sent, data_sent = sentbox.fetch(num_sent, '(RFC822)') 
    mail_sent = email.message_from_string(data_sent[0][1]) 
    subject_sent = unicode(email.header.decode_header(mail_sent['Subject'])[0]) 
    from_sent = unicode(email.header.decode_header(mail_sent['From'])[0]) 
    datetime_sent = email.utils.mktime_tz(email.utils.parsedate_tz((mail_sent["Date"]))) 
    datetime_sent = datetime.datetime.fromtimestamp(datetime_sent) 

datetime 객체 다음은 메시지 오류입니다.

File "checkIMAP_client.py", line 116, in <module> 
    datetime_sent = email.utils.mktime_tz(email.utils.parsedate_tz((mail_sent["Date"]))) 
    File "/usr/lib64/python2.6/email/_parseaddr.py", line 142, in mktime_tz 
    if data[9] is None: 
TypeError: 'NoneType' object is unsubscriptable 

유효한 datetime 날짜 형식으로 datetime 개체를 구문 분석해야합니다.

편집 : 내 스크립트에서 보낸 항목과받은 편지함 폴더의 이메일을 비교해야합니다. 받은 편지함 전자 메일에서 날짜를 읽을 수 있습니다. email.message() 개체에 append 명령을 사용합니다. smtplib을 사용하여 SMTP에서 보낸 전자 메일에서 datetime을 읽을 수 없습니다. 코드 :

나는 코드를 어떻게 볼 수있는 약간의 수정

datetime_sent = unicode(mail_sent["Date"]) 
print("Datetime sent =" + datetime_sent) 

프롬프트 :

Datetime sent =None 

내가 볼 것입니다 날짜가 보낸 이메일에서 구현 될 예정이다 방법 . 받은 편지함 메일에는 문제가 없기 때문에 여기에 문제가있는 것으로 보입니다.

편집 : 좋아, 문제를 찾았습니다. 내 서버에서 smtplib가있는 먼 서버로 전자 메일을 보내고 있습니다. 먼 서버가 특정 주소에서 내 서버의 메일을 수신하면 원래 서버로 다시 리다이렉트합니다. 내 스크립트가 보낸 전자 메일에서 datetime을 읽을 수 없습니다. 그렇다면 email.parsedate_tz()에 사용해야하는 올바른 형식은 무엇입니까?

+0

메시지에 유효한 'Date :'헤더가 있습니까? 한 줄에 여러 함수 호출이 있습니다. 어쩌면 예기치 않은 결과가 나오는 곳을 여러 줄로 둘러 볼 수 있습니다. 이러한 진단 정보를 포함시키기 위해 질문을 편집하십시오. 또한 [mcve]를 포함하는 지침을 참조하십시오. – tripleee

+0

왜이 날과 나이에 파이썬 2.6을 타깃으로 삼고 있습니까? 3.6으로 전환하면 날짜 해석 기능이 내장 된'email' 라이브러리가 많이 업데이트됩니다. – tripleee

+0

댓글 1 : 내가 분석 한 일부 이메일에 잘못된 날짜 형식이 있습니다. 테스트 사서함을 제거한 후에도 OK였습니다. 같은 문제가있는 다른 스택 사람들 때문에 문제가 생길 까봐 두려웠습니다. 설명 2 : 스크립트를 실행할 서버에서 Python을 업데이트 할 수 없습니다. – Aurelien

답변

0

좋아, 그래서 내 구문 분석 기능을 확인했습니다. smtp 서버를 사용하여 Thunderbird에서 메일을 보낼 때 작동합니다. datetime 객체를 가져올 수 있습니다. Python으로 메일을 보낼 때 물건이 부딪칩니다.