2012-05-23 2 views
0

내 이메일에 프린터 상태 보고서가 전송되었습니다. 나는 그것들을 다운로드하고 하나씩 처리하고, 모든 정보를 추가 처리를 위해 어떤 데이터베이스에 넣고 싶다. 나는 그것을 배우기 시작하면서 python3을 사용하고 싶습니다.python3 pop3을 통해 메일 다운로드 및 처리

import getpass 
import poplib 

server = poplib.POP3('pop3.mailserver.com') 

server.user('[email protected]') 
server.pass_('pswd') 

numMessages = 1 #len(server.list()[1]) 
emails, total_bytes = server.stat() 

print("{0} emails in the inbox, {1} bytes total".format(emails, total_bytes)) 

for i in range(numMessages): 
    for msg in server.retr(i+1)[1]: 
     print(msg) 

와 내가 얻을 것이이 형식 (헤더와 몸) 전체 전자 메일 메시지입니다이 : 이 코드가

b'Return-Path: <"tever">' 
b'Delivered-To: [email protected]' 
b'Received: (qmail 13193 invoked by uid 89); 23 May 2012 08:44:51 -0000' 
b'Received: by simscan 1.2.0 ppid: 13156, pid: 13164, t: 0.1620s' 
b'   scanners: clamav: 0.97-exp/m:53 spam: 3.3.1' 
b'X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on mxavas16.ad.aruba.it' 
b'X-Spam-Level: *' 
b'X-Spam-Status: No, score=1.4 required=5.0 tests=FH_FROMEML_NOTLD,INVALID_MSGID,' 
b'\tT_FILL_THIS_FORM_SHORT autolearn=disabled version=3.3.1' 
b'Received: from unknown (HELO smtplq02.aruba.it) (62.149.158.35)' 
b' by mxavas16.ad.aruba.it with SMTP; 23 May 2012 08:44:51 -0000' 
b'Received: (qmail 30750 invoked by uid 89); 23 May 2012 08:44:51 -0000' 
b'Received: from unknown (HELO smtp8.aruba.it) (62.149.158.228)' 
b' by smtplq02.aruba.it with SMTP; 23 May 2012 08:44:51 -0000' 
b'Received: (qmail 30979 invoked by uid 89); 23 May 2012 08:44:51 -0000' 
b'Received: from unknown (HELO NM7ACD31) ([email protected]@83.xxx.xxx.xxx)' 
b' by smtp8.ad.aruba.it with SMTP; 23 May 2012 08:44:51 -0000' 
b'Date: Wed, 23 May 2012 10:46:34 +0200' 
b'From: tever' 
b'Subject: QEQ1313212' 
b'To: [email protected]' 
b'Message-Id: <201205231046340001d806.TEVER>' 
b'Mime-Version: 1.0' 
b'Content-Type: text/plain; charset="utf-8"' 
b'Content-Transfer-Encoding: base64' 
b'' 
b'RXF1aXBtZW50IElEOiAgICAgICAgICAgICANCk1vZGVsIE5hbWU6ICAgICAgICAg' 
b'ICAgICAgQ0RDIDE3MjVfRENDIDI3MjUNClNlcmlhbCBOdW1iZXI6ICAgICAgICAg' 
b'ICAgUUVRMTMxMzIxMg0KTWV0ZXJEYXRlOiAgICAgICAgICAgICAgICBXZWQgMjMg' 
b'TWF5IDIwMTIgMTA6NDY6MzQNCkNvdW50ZXJzIGJ5IEZ1bmN0aW9uDQogUHJpbnRl' 
b'ZCBQYWdlcw0KICBDb3BpZXI6ICAgICAgICAgICAgICAgICAyMjE1ICAgIA0KICBQ' 
b'cmludGVyOiAgICAgICAgICAgICAgICAxMTEyMDQgIA0KICBGQVg6ICAgICAgICAg' 
b'ICAgICAgICAgICA5MzIgICAgIA0KICBUb3RhbDogICAgICAgICAgICAgICAgICAx' 
b'MTQzNTEgIA0KIFNjYW5uZWQgUGFnZXMNCiAgQ29waWVyOiAgICAgICAgICAgICAg' 
b'ICAgMTkxOSAgICANCiAgRkFYOiAgICAgICAgICAgICAgICAgICAgMjIwNyAgICAN' 
b'CiAgT3RoZXI6ICAgICAgICAgICAgICAgICAgMTgyMiAgICANCiAgVG90YWw6ICAg' 
b'ICAgICAgICAgICAgICAgNTk0OCAgICANCkNvdW50ZXJzIGJ5IFBhcGVyIFNpemUN' 
b'Ck1vbm9jaHJvbWUNCiAgQTM6ICAgICAgICAgICAgICAgICAgICAgNDU0ICAgICAN' 
b'CiAgQjQ6ICAgICAgICAgICAgICAgICAgICAgMCAgICAgICANCiAgQTQ6ICAgICAg' 
b'ICAgICAgICAgICAgICAgMTA4MDQ4ICANCiAgQjU6ICAgICAgICAgICAgICAgICAg' 
b'ICAgNDI3ICAgICANCiAgQTU6ICAgICAgICAgICAgICAgICAgICAgMCAgICAgICAN' 
b'CiAgRm9saW86ICAgICAgICAgICAgICAgICAgMSAgICAgICANCiAgTGVkZ2VyOiAg' 
b'ICAgICAgICAgICAgICAgMCAgICAgICANCiAgTGVnYWw6ICAgICAgICAgICAgICAg' 
b'ICAgMCAgICAgICANCiAgTGV0dGVyOiAgICAgICAgICAgICAgICAgMCAgICAgICAN' 
b'CiAgU3RhdGVtZW50OiAgICAgICAgICAgICAgMCAgICAgICANCiAgT3RoZXIxOiAg' 
b'ICAgICAgICAgICAgICAgMCAgICAgICANCiAgT3RoZXIyOiAgICAgICAgICAgICAg' 
b'ICAgMiAgICAgICANCk1vbm8gQ29sb3INCiAgQTM6ICAgICAgICAgICAgICAgICAg' 
b'ICAgMCAgICAgICANCiAgQjQ6ICAgICAgICAgICAgICAgICAgICAgMCAgICAgICAN' 
b'CiAgQTQ6ICAgICAgICAgICAgICAgICAgICAgMCAgICAgICANCiAgQjU6ICAgICAg' 
b'IE90aGVyIEVycm9ycw0KDQo8V2VkIDIzIE1heSAyMDEyIDEwOjQxOjU0Pg0KICBb' 
b'IF0gQWxsIE90aGVyIEVycm9ycw0KDQo8V2VkIDIzIE1heSAyMDEyIDEwOjQ1OjIx' 
b'Pg0KICBbKl0gQWRkIFBhcGVyDQoNCi0tLS0tLS0tLS0tLS0tLS0tLS0NCkNEQyAx' 
b'NzI1X0RDQyAyNzI1DQpbMDA6YzA6ZWU6N2E6Y2Q6MzFdDQotLS0tLS0tLS0tLS0t' 
b'LS0tLS0t' 
b'DQo=' 
b'' 

내가 필요로하는 선으로 본문 내용 라인을 처리하는 것입니다 및 일치하는 경우 서버에서 삭제해야합니다.

및 그 방법에 대한 도움말?

많은 감사 제라드 당신이 좋은 시작이 될 것입니다 메시지를 분석하여 시작하면 아마

답변

1

: 다음

# ... get your message ... 
# msg = [b'Return-Path: <"tever">' 
#  b'Delivered-To: [email protected]', ... ] 

import email 

# decode simple non-multipart message 
message = email.message_from_bytes(b'\n'.join(msg)) 
payload = message.get_payload(decode=True) 
payload = payload.decode(message.get_content_charset()) 
print(payload) 

당신이 필요로하는 어떤 페이로드와 함께 할 수 ...

+0

나는 시도했다. 그러나 나는 다음을 얻는다 :'message = email.message_from_bytes (b '\ n'.join (msg)) TypeError : 시퀀스 항목 0 : 예상 바이트, int found'는 전자 메일이 첨부 파일을 가지고 있기 때문인가? – gerpaick

+0

당신의 코드에있는 메시지는 bytestrings의리스트처럼 리턴 될 것입니다. 그래서 예제는'msg'를 기대합니다. 그렇지 않다면, 그냥 원시 메시지를 바이트로 변환하고'email.message_from_bytes'로 전달하십시오. – mata

관련 문제