kleines Email-Prgramm
Verfasst: Freitag 5. August 2016, 18:03
Ich bin gerade dabei ein kleines Email Programm zu schreiben.
Es sieht bis jetzt so aus:
Mein Problem ist: Ich möchte den eigentlichen Text aus einer Email extrahieren, kann aber noch in html sein.
Ein kleines Beispiel:
hier möchte ich eigentlich nur 14 Zeilen haben, ich habe aber keine Idee wie ich die gut extrahieren kann, da sie manchmal auch
mitten in der Email stehen.
Hat einer eine Idee?
Es sieht bis jetzt so aus:
Code: Alles auswählen
#/usr/bin/python3
import time
import smtplib
import poplib
import email
import markdown
class Mail():
def __init__(self, address, popserver, smtpserver, username=None):
if username is None:
self.username = address
else:
self.username = username
self.address = address
self.popserver = popserver
self.smtpserver = smtpserver
self.mails = []
def send_mail(self, receiver, subject, text, passwd,
use_markdown=False, verbose=False):
if use_markdown:
text = markdown.markdown(text)
mail = """From: {}
To: {}
Time: {}
Subject: {}
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: 7bit
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">'
</head>
<body>
{}
</body>
</html>""".format(self.address, receiver, time.ctime(time.time()), subject, text)
mail = markdown.markdown(mail)
server = smtplib.SMTP(self.smtpserver)
server.login(self.address, passwd)
server.sendmail(self.address, receiver, mail)
server.quit()
return 0
def get_mails(self, passwd):
server = poplib.POP3(self.popserver)
server.getwelcome()
server.user(self.username)
server.pass_(passwd)
emails = server.list()
for i in emails[1]:
email = dict.fromkeys(('number', 'bytes', 'header',
'message', 'octets'))
i = i.decode('utf-8').split(' ')
email['number'] = i[0]
email['bytes'] = i[1]
header,message,octets = server.retr(i[0])
email['header'] = header
email['message'] = message
email['octets'] = octets
self.mails.append(email)
server.quit()
def print_mails(self, verbose=False):
for i in self.mails:
print('#####')
print(
"""Number: {}
Bytes: {}
Octets: {}
Header: {}""".format(i['number'], i['bytes'], i['octets'],
i['header'])
)
if verbose:
for line in i['message']:
print(line.decode('utf-8'))
print('-----')
mail = self.decode_mail(i['message'])
print('--- HEADER ---')
header = dict(email.parser.Parser().parsestr(mail))
for k, v in header.items():
print(k+':: ', v)
print('\n\n--- MESSAGE ---')
print(email.message_from_string(mail))
def delete_mail(self, passwd, number):
server = poplib.POP3(self.popserver)
server.getwelcome()
server.user(self.username)
server.pass_(passwd)
server.dele(number)
server.quit()
def decode_mail(self, mail):
text = ''
for line in mail:
line = line.decode('utf-8')
text += line+'\n'
return text
Ein kleines Beispiel:
Code: Alles auswählen
>>>import mail
>>>account = mail.Mail('meine@email.de', 'pop.1und1.de', 'smtp.1und1.de')
>>>account.get_mails('topsecret')
>>>account.print_mails()
#jetzt kommt das Problem:
#Die Ausgabe ab der Zeile, in welcher "print('\n\n--- MESSAGE ---") steht:
--- MESSAGE ---
Return-Path: <meine@email.de>
Received: from mout.kundenserver.de ([212.227.126.130]) by mx.kundenserver.de
(mxeue004) with ESMTPS (Nemesis) id 0M6KYJ-1bLRbF1mLD-00ySpQ for
<meine@email.de>; Fri, 05 Aug 2016 17:30:42 +0200
Received: from [127.0.0.1] ([217.227.26.103]) by mrelayeu.kundenserver.de
(mreue002) with ESMTPA (Nemesis) id 0MZ5ZT-1bjjij0tIx-00VdZd for
<meine@email.de>; Fri, 05 Aug 2016 17:30:42 +0200
From: meine@email.de
To: meine@email.de
Time: Fri Aug 5 17:30:51 2016
Subject: test
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: 7bit
Date: Fri, 05 Aug 2016 17:30:42 +0200
Message-ID: <0MNyfL-1bd6wT16Kp-007X7l@mrelayeu.kundenserver.de>
X-Provags-ID: V03:K0:wNxYRKpwRvi6GWP+wjfYTsCbpHTfxouv9hSt1zB2lyDIGX1m6Cq
hsKI6vDksZMwDHRlx6FEDf/xLy4HCwq7rbrZ7WTCodoYfFCHWwOjuOpObTQotGqtPJkf1U8
W4+42S0CNNYroq6e8MMzdy4hVkR0bJUaljcvkI77xnydmTZ3iJLoT04fZd/Cmdpz1Mw07F2
rQg+hnP+dxZB/6WTkj6KQ==
X-UI-Out-Filterresults: notjunk:1;V01:K0:crw3O7LMe+E=:xTqhm1Q655eh7S7c5w9CZQ
rarM+wEF3I4F9OvtAbKrmmmx5UMASk+vRm9zgVJy7dVNOoR5FWCX25Ge/CyDCAGStD83DrNdn
vskTsjpuUMOWonMc85zEdWCjzvLlkFP1Fi2r+xfWHzV9Foo/Ao86svSeAWxxx8yIzKrBAVcZR
krb23X+qw0MnIakbeP+fqPhq9Uvy8qIa6xITFYI3q8AzgkNJ3MTA0hnxCUdTz9bVY4Cy8z/ZI
LvUB8FiUZ7BlQiKTZPhll+NXaqQ1ivJMkYYyhrhLbySNjZ+P5zU1Zp2ajE5YxM4NxVjgk0i4R
L0KuTeAa9zcA1mu4U/paMTk0BkRAcG+r2C4IAj4fpiCO5kgeTTWfzRQ+7oTUrgm2Y7j8JtEof
kNNo8v8FuywS6gEK+dhaQPkzytcrmXcDjR26LUY8VAcI+j33UKFOWS7r6uv0/AhvpObGPdixj
UfytuhcCLhz1NDFYvINxXh75gsJ4kmoZvSZwh0Jp3S0+rbc+ELIdAhzzMNy868JpY7kQBfnlD
yPtp4FTEcKUVCPqj5TRLIrsrbz6SNVvZAU1Nc485i1PdmY2vVoMI2P6rawhRWYbbH6Uw817LW
c2O0CQ3+tFWQEPoCMMRX0CMwY0AGwITtN/v3hW2RHFTTe4BJitiChaGcxV7Xl8HFcu5P1U/de
nNd80D7dTPxtndUTK0nKLB4J59xJjcXVTFtzVEf0/MbgLnj7WULZWFv368cWys3uCENC3apvo
LbeFPmI+LgkDpK27qYQN08LOTuHYNzAhXlHIKbiRVDkgD64XHkl9qTZJnPJf2OvdaSU2+DKjd
1TKb7hi
Envelope-To: <meine@email.de>
X-UI-Filterresults: notjunk:1;V01:K0:Ui3UhvxMcvc=:npW/4HifLGbtChWebOjBspTS4S
rfn016m1WZ+OgDbXLfDcDmB926qQoAiL8zKu9eqWEUhhfO9Cb5/XRqdCCa+LfFlaOtD4RXlJO
oQ3hYapy9/d9cu6ZdhBeD0WbIVKzYhGnaNB12h8NBva3EVndkMRvtF0Aip7NZFtoVSfI5eIJG
oLaaQOl1SBAj1u6OtcFSM0LSriUfuTyAf7pOy8uWdIjbVGH+0AYHhEiWihi8NeQt+gcjoQELc
vc1UZ6csaodCA8Bnl73c24t/j/63Y7cpN0ww8SF+rwnwunn8VYyzBo5DPlGVqzuJJ4MQ/wCcD
CcROFZSoIN+tdLwcFYglkBD06V7kmhWuqNvcwgEtFuP3rzS7L+75gl2gRRUXdVXxuqsOgEq4X
D1S+OKnRXXaGcSPd3/hq+yQipVZJqtEQziPAOoyOducDxiQYkH1lxqsqp0WIiNs+DSdEgg9Vs
3OqhJIfwLZVJ3VjMEgj5tDl40umEyfp1b0OkkDdWYB0NiWpVNMGHJ2pcq1EChTbMl5tvBQCas
QrUCU/gPb6xYENHtfiajD9ksyebPBkL1aXLjiSqeR36kVetZcUAYgJ4KfKsPQsGW/T41HWhgr
Q+wEtaOD0pHr8jrTr6TScuGewOucmQlIYa12aQhdIjMQuhShFkw18J5iucg6+OdUsXb08s+r6
s18sG8A0F1hrhkgsqDaic9JScfJDhWR4r2A5r+PjcSle+gFU8P6fyHnfeyH1uvEDOIad9RO0I
Sl+1/00nVX/NEX9TLmALTvo4cpm1JieZTGsBq5MJ7EcW0CdQ84MA8dSdsefWSYkPGahcphdk0
sl7VYIaIh+4oR+Sl79wEvxsZjt7JVYL7CNKVrP+56juPBwa+oWLDLIvD2TOM3JfUw22/K7HVQ
CkMQcY4KEC3k6YgQM6oUR7PHtPAq9XTFrCokHbeh4pws0YK+Bm3kTJy0oKcnj698GkGOikoo9
Gw1RfAKJYlyO85j6DxMwZjIBCBBrb8WS+kPnlQ57y9qQXfzKjZ+vXLVCzeFHW0eiHizY0rNRQ
+x/3prSPCTdF3LK7Kzgw+sEVCEhehZiRxQzXlPySKoGcGaI/AEYINgCMI0HH2UjLqr4Eowj5q
rAjOHN63CPCu16zAYNTQKR/M4Wdr483MVvSuzHmVbMEdjxgC5w59Uv76I7DkT8JNLgWcLWvCm
cR/ADsu5Tm0aCb1xg22nH5vYlyvy9NVo4S/BJ5OqQJim6rXH4B92Z5dphLZbxn/lpHyTFwPly
ywNVdkHrLqP3NEdJBN2/gngkj9+wFFIiUYLEiZ0+moU3VB1mZv9++ko9KLvrJlubM4sAhJIiF
AsQVr/8lQ6Ag90R81G8Isxkep3EyL+nVaGM9zhoP2uvJTf8SUDb3tUZFhNIAN11PIyf7EGgnJ
Q8TXWNaMJw4DXqvS90r2cAO7MhMR/FzY9hJZy7rrN1sqoe2SLjH5ULTGPLdRDaMy9V82ltFZI
d4ofRSKkdP3kNT8RSPhKdvo6eWQwao348vD5b9iK6uyTAsmYVn+um164SSvIOtUpQM1KYegQG
IL6cdrNMlMtWeUmXdHVY=
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">'
</head>
<body>
<h1>Hallo</h1>
<ul>
<li>1</li>
<li>2</li>
<li>3</li>
</ul>
</body>
</html>
mitten in der Email stehen.
Hat einer eine Idee?