Du bist hier: Snippet-Verzeichnis » Python (121)
Sprache:

Basic email to HTML converter

Sprache: English
Programmiersprache: Python
Veröffentlicht von: purcell [nicht registriert]
Letzte Änderung: 15.05.2006
Aufrufe: 905


Beschreibung

Pipe an e-mail message in, get HTML out. Useful for saving interesting messages as a simple web page.

Code

1 #!/usr/bin/env python 2 3 __author__ = 'Steve Purcell <stephen_purcell at yahoo dot com>' 4 5 import rfc822, mimetools, multifile, sys, string 6 from cgi import escape 7 8 class Formatter: 9 def __init__(self, instream, outstream, extraheaders=()): 10 self.outstream = outstream 11 self.extraheaders = extraheaders 12 self._format(mimetools.Message(instream)) 13 14 def _format(self, msg): 15 self._format_headers(msg) 16 self._format_body(msg) 17 18 def _format_headers(self, headers): 19 subject = escape(headers['subject']) 20 sender = escape(headers['from']) 21 sent_to = headers.get('to', None) 22 date = escape(headers['date']) 23 cc_to = headers.get('cc', None) 24 25 self.outstream.write('''\ 26 <html><head> 27 <title>%(subject)s</title> 28 </head><body bgcolor="#ffffff"> 29 <h1>%(subject)s</h1> 30 <b>Date:</b> %(date)s<br> 31 <b>From:</b> %(sender)s<br> 32 ''' % locals()) 33 if sent_to: 34 sent_to = escape(sent_to) 35 self.outstream.write("<b>To:</b> %(sent_to)s<br>\n" % locals()) 36 if cc_to: 37 cc_to = escape(cc_to) 38 self.outstream.write("<b>CC:</b> %(cc_to)s<br>\n" % locals()) 39 40 for header in self.extraheaders: 41 header_value = headers.get(header,None) 42 if header_value: 43 header_value = escape(header_value) 44 header_name = string.join(map(string.capitalize, 45 string.split(header,'-')),'-') 46 self.outstream.write("<b>%s</b>: %s<br>" % 47 (header_name, header_value)) 48 self.outstream.write("<hr noshade size=1>\n") 49 50 def _format_body(self, msg): 51 content_type = msg.gettype() 52 is_html = (content_type == 'text/html') 53 input = msg.fp 54 55 if not is_html: 56 self.outstream.write("<pre>\n") 57 58 while 1: 59 line = input.readline() 60 if not line: 61 break 62 if not is_html: 63 line = escape(line) 64 self.outstream.write(line) 65 66 if not is_html: 67 self.outstream.write("</pre>\n") 68 69 self.outstream.write("</body></html>") 70 71 72 if __name__ == '__main__': 73 Formatter(sys.stdin, sys.stdout, ('organization','x-mailer')) 74

Noch kein Kommentar vorhanden

Dieses Snippet kommentieren

Name *  

E-Mail (wird nicht angezeigt) *    

Website  

Kommentar *  

Sicherheitscode Sicherheitscode *    

RSS