


Python verwendet das E-Mail-Modul zum Kodieren und Dekodieren von E-Mails
Dieser Artikel stellt Ihnen vor, wie Python das E-Mail-Modul zum Kodieren und Dekodieren von E-Mails verwendet. Freunde, die die gleichen Anforderungen haben, können sich auf
E-Mails entschlüsseln
Das mit Python gelieferte E-Mail-Modul ist eine sehr interessante Sache. Es kann E-Mails verschlüsseln und entschlüsseln und ist sehr nützlich für die Verarbeitung von E-Mails. Die Verarbeitung von E-Mails ist eine sehr heikle Aufgabe, insbesondere das Dekodieren von E-Mails, da sich das Format zu stark ändert:
Received: from 192.168.208.56 ( 192.168.208.56 [192.168.208.56] ) by ajax-webmail-wmsvr37 (Coremail) ; Thu, 12 Apr 2007 12:07:48 +0800 (CST) Date: Thu, 12 Apr 2007 12:07:48 +0800 (CST) From: user1 <xxxxxxxx@163.com> To: zhaowei <zhaoweikid@163.com> Message-ID: <31571419.200911176350868321.JavaMail.root@bj163app37.163.com> Subject: =?gbk?B?u+nJtA==?= MIME-Version: 1.0 Content-Type: multipart/Alternative; boundary="----=_Part_21696_28113972.1176350868319" ------=_Part_21696_28113972.1176350868319 Content-Type: text/plain; charset=gbk Content-Transfer-Encoding: base64 ztLS0b+qyrzS1M6qysfSu7j20MfG2ru70ru0zqOs1K3AtMrH0ru49tTCtffSu7TOztLDx8/W1NrT prjDysew67XjssXE3MjI1ebC6bezICAg ------=_Part_21696_28113972.1176350868319 Content-Type: text/html; charset=gbk Content-Transfer-Encoding: quoted-printable <p>=CE=D2=D2=D1=BF=AA=CA=BC=D2=D4=CE=AA=CA=C7=D2=BB=B8=F6=D0=C7=C6=DA=BB= =BB=D2=BB=B4=CE=A3=AC=D4=AD=C0=B4=CA=C7=D2=BB=B8=F6=D4=C2=B5=F7=D2=BB=B4=CE= </p> <p>=CE=D2=C3=C7=CF=D6=D4=DA=D3=A6=B8=C3=CA=C7=B0=EB=B5=E3=B2=C5=C4=DC=C8= =C8</p> <p>=D5=E6=C2=E9=B7=B3</p> ------=_Part_21696_28113972.1176350868319--Das Obige ist die Quelldatei einer E-Mail. Die erste Zeile bis zur ersten Leerzeile ist der Header und der Rest ist der Text der E-Mail. Kopieren Sie die oben genannten Informationen und speichern Sie sie in einer Datei mit dem Namen xxx.eml. Sie können den Inhalt sehen, indem Sie mit der Maus darauf doppelklicken. Was Sie sehen, ist natürlich die dekodierte Version.
Sehen Sie sich an, wie das E-Mail-Modul diese E-Mail verarbeitet. Gehen Sie davon aus, dass der Brief als xxx.eml gespeichert wurde.
#-*- encoding: gb2312 -*- import email fp = open("xxx.eml", "r") msg = email.message_from_file(fp) # 直接文件创建message对象,这个时候也会做初步的解码 subject = msg.get("subject") # 取信件头里的subject, 也就是主题 # 下面的三行代码只是为了解码象=?gbk?Q?=CF=E0=C6=AC?=这样的subject h = email.Header.Header(subject) dh = email.Header.decode_header(h) subject = dh[0][0] print "subject:", subject print "from: ", email.utils.parseaddr(msg.get("from"))[1] # 取from print "to: ", email.utils.parseaddr(msg.get("to"))[1] # 取to fp.close()Dieser Code kann den Betreff, den Absender und den Empfänger einer E-Mail analysieren. email.utils.parseaddr wird zum spezifischen Parsen von E-Mail-Adressen verwendet. Der Grund dafür ist, dass E-Mail-Adressen im Originaltext häufig so geschrieben sind: user1
Der vorherige Code analysiert nur den Briefkopf und dann den Briefkörper. Der Brieftext kann aus zwei Teilen bestehen: reinem Text und HTML, und kann auch Anhänge enthalten. Pantomimekenntnisse sind hier erforderlich. Eine ausführliche Einführung finden Sie online. Ich werde hier nicht auf Details eingehen, werfen wir einen Blick auf die Vorgehensweise zum Parsen:
#-*- encoding: gb2312 -*- import email fp = open("xxx.eml", "r") msg = email.message_from_file(fp) # 循环信件中的每一个mime的数据块 for par in msg.walk(): if not par.is_multipart(): # 这里要判断是否是multipart,是的话,里面的数据是无用的,至于为什么可以了解mime相关知识。 name = par.get_param("name") #如果是附件,这里就会取出附件的文件名 if name: #有附件 # 下面的三行代码只是为了解码象=?gbk?Q?=CF=E0=C6=AC.rar?=这样的文件名 h = email.Header.Header(name) dh = email.Header.decode_header(h) fname = dh[0][0] print '附件名:', fname data = par.get_payload(decode=True) # 解码出附件数据,然后存储到文件中 try: f = open(fname, 'wb') #注意一定要用wb来打开文件,因为附件一般都是二进制文件 except: print '附件名有非法字符,自动换一个' f = open('aaaa', 'wb') f.write(data) f.close() else: #不是附件,是文本内容 print par.get_payload(decode=True) # 解码出文本内容,直接输出来就可以了。 print '+'*60 # 用来区别各个部分的输出Einfach, Sie können eine komplexe Analyse von E-Mails ohne erreichen viel Codefunktion!
E-Mails kodieren
Es ist auch sehr einfach, das E-Mail-Modul zum Generieren von E-Mails zu verwenden, es sind lediglich einige Grundkenntnisse in MIME erforderlich. Werfen wir einen Blick auf einige Pantomime-Grundlagen. MIME-Nachrichten bestehen aus zwei Teilen: Nachrichtenkopf und Nachrichtentext. Bei E-Mails handelt es sich um den Nachrichtenkopf und den Nachrichtentext. Trennen Sie den E-Mail-Header und den E-Mail-Text durch Leerzeilen. Dies lässt sich deutlich erkennen, wenn man sich die Quelldatei einer E-Mail mit einem Texteditor (z. B. Notepad) ansieht. Outlook und Foxmail verfügen über eigene Funktionen zum Anzeigen von Quelldateien.
Der E-Mail-Header enthält wichtige Informationen wie Absender, Empfänger, Betreff, Uhrzeit, MIME-Version und Art des E-Mail-Inhalts. Jede Information wird als Domäne bezeichnet und besteht aus dem Domänennamen, gefolgt von „:“ und dem Informationsinhalt. Sie kann eine Zeile lang sein, oder eine längere Zeile kann mehrere Zeilen umfassen. Die erste Zeile des Felds muss „oben“ geschrieben werden, d Informationen selbst.
Der E-Mail-Text enthält den Inhalt der E-Mail und sein Typ wird durch das Feld „Content-Type“ im E-Mail-Header angegeben. Die gebräuchlichsten Typen sind text/plain (einfacher Text) und text/html (Hypertext). Der E-Mail-Text ist in mehrere Segmente unterteilt, und jedes Segment enthält einen Segmentkopf und einen Segmenttext, die ebenfalls durch Leerzeilen getrennt sind. Es gibt drei gängige Multipart-Typen: Multipart/Mixed, Multipart/Related und Multipart/Alternative. Aus ihren Namen lässt sich leicht auf die jeweilige Bedeutung und Verwendung dieser Typen schließen.
Wenn Sie der E-Mail Anhänge hinzufügen möchten, müssen Sie das Multipart-/Mischsegment definieren. Wenn eingebettete Ressourcen vorhanden sind, muss mindestens das Multipart-/verwandte Segment definiert werden /alternatives Segment muss definiert werden. Beim Generieren von E-Mails werden diese verschiedenen MIME-Teile generiert. Das E-Mail-Modul hat diese Prozesse gepackt:
#-*- encoding: gb2312 -*- import email import string, sys, os, email import time class MailCreator: def __init__(self): # 创建邮件的message对象 self.msg = email.Message.Message() self.mail = "" def create(self, mailheader, maildata, mailattachlist=[]): # mailheader 是dict类型,maildata是list, 且里面第一项为纯文本类型,第二项为html. # mailattachlist 是list, 里面为附件文件名 if not mailheader or not maildata: return for k in mailheader.keys(): # 对subject要作特殊处理,中文要转换一下。 # 比如 "我的一个测试邮件" 就要转换为 =?gb2312?b?ztK1xNK7uPay4srU08q8/g==?= if k == 'subject': self.msg[k] = email.Header.Header(mailheader[k], 'gb2312') else: self.msg[k] = mailheader[k] # 创建纯文本部分 body_plain = email.MIMEText.MIMEText(maildata[0], _subtype='plain', _charset='gb2312') body_html = None # 创建html部分,这个是可选的 if maildata[1]: body_html = email.MIMEText.MIMEText(maildata[1], _subtype='html', _charset='gb2312') # 创建一个multipart, 然后把前面的文本部分和html部分都附加到上面,至于为什么,可以看看mime相关内容 attach=email.MIMEMultipart.MIMEMultipart() attach.attach(body_plain) if body_html: attach.attach(body_html) # 处理每一个附件 for fname in mailattachlist: attachment=email.MIMEText.MIMEText(email.Encoders._bencode(open(fname,'rb').read())) # 这里设置文件类型,全部都设置为Application.当然也可以是Image,Audio什么的,这里不管那么多 attachment.replace_header('Content-type','Application/octet-stream;name="'+os.path.basename(fname)+'"') # 一定要把传输编码设置为base64,因为这里默认就是用的base64 attachment.replace_header('Content-Transfer-Encoding', 'base64') attachment.add_header('Content-Disposition','attachment;filename="'+os.path.basename(fname)+'"') attach.attach(attachment) # 生成最终的邮件 self.mail = self.msg.as_string()[:-1] + attach.as_string() return self.mail if __name__ == '__main__': mc = MailCreator() header = {'from': 'zhaowei@163.com', 'to':'weizhao@163.com', 'subject':'我的一个测试邮件'} data = ['plain text information', '<font color="red">html text information</font>'] if sys.platform == 'win32': attach = ['c:/windows/clock.avi'] else: attach = ['/bin/cp'] mail = mc.create(header, data, attach) f = open("test.eml", "wb") f.write(mail) f.close()Hier habe ich eine Klasse für die Verarbeitung gekapselt Der Prozess lautet:
1. Erstellen Sie zuerst das Nachrichtenobjekt: email.Message.Message()
2. Erstellen Sie das MIMEMultipart-Objekt: email.MIMEMultipart.MIMEMultipart()
3 An MIMEMultipart anhängen. Der MIMEText besteht hier eigentlich nicht nur aus Text, sondern enthält auch Bilder, Anwendungen, Audio usw.
4. Erstellen Sie eine endgültige E-Mail.
Python-Skript zur Berechnung der Größe aller Verzeichnisse unter einem angegebenen Pfad_PHP-Tutorial
Python-Berechnung von Zeichenbreite Methode
Das obige ist der detaillierte Inhalt vonPython verwendet das E-Mail-Modul zum Kodieren und Dekodieren von E-Mails. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Ist es genug, um Python für zwei Stunden am Tag zu lernen? Es hängt von Ihren Zielen und Lernmethoden ab. 1) Entwickeln Sie einen klaren Lernplan, 2) Wählen Sie geeignete Lernressourcen und -methoden aus, 3) praktizieren und prüfen und konsolidieren Sie praktische Praxis und Überprüfung und konsolidieren Sie und Sie können die Grundkenntnisse und die erweiterten Funktionen von Python während dieser Zeit nach und nach beherrschen.

Zu den wichtigsten Anwendungen von Python in der Webentwicklung gehören die Verwendung von Django- und Flask -Frameworks, API -Entwicklung, Datenanalyse und Visualisierung, maschinelles Lernen und KI sowie Leistungsoptimierung. 1. Django und Flask Framework: Django eignet sich für die schnelle Entwicklung komplexer Anwendungen, und Flask eignet sich für kleine oder hochmobile Projekte. 2. API -Entwicklung: Verwenden Sie Flask oder Djangorestframework, um RESTFUFFUPI zu erstellen. 3. Datenanalyse und Visualisierung: Verwenden Sie Python, um Daten zu verarbeiten und über die Webschnittstelle anzuzeigen. 4. Maschinelles Lernen und KI: Python wird verwendet, um intelligente Webanwendungen zu erstellen. 5. Leistungsoptimierung: optimiert durch asynchrones Programmieren, Caching und Code

Python ist in der Entwicklungseffizienz besser als C, aber C ist in der Ausführungsleistung höher. 1. Pythons prägnante Syntax und reiche Bibliotheken verbessern die Entwicklungseffizienz. 2. Die Kompilierungsmerkmale von Compilation und die Hardwarekontrolle verbessern die Ausführungsleistung. Bei einer Auswahl müssen Sie die Entwicklungsgeschwindigkeit und die Ausführungseffizienz basierend auf den Projektanforderungen abwägen.

Zu den realen Anwendungen von Python gehören Datenanalysen, Webentwicklung, künstliche Intelligenz und Automatisierung. 1) In der Datenanalyse verwendet Python Pandas und Matplotlib, um Daten zu verarbeiten und zu visualisieren. 2) In der Webentwicklung vereinfachen Django und Flask Frameworks die Erstellung von Webanwendungen. 3) Auf dem Gebiet der künstlichen Intelligenz werden Tensorflow und Pytorch verwendet, um Modelle zu bauen und zu trainieren. 4) In Bezug auf die Automatisierung können Python -Skripte für Aufgaben wie das Kopieren von Dateien verwendet werden.

Python wird häufig in den Bereichen Data Science, Web Development und Automation Scripting verwendet. 1) In der Datenwissenschaft vereinfacht Python die Datenverarbeitung und -analyse durch Bibliotheken wie Numpy und Pandas. 2) In der Webentwicklung ermöglichen die Django- und Flask -Frameworks Entwicklern, Anwendungen schnell zu erstellen. 3) In automatisierten Skripten machen Pythons Einfachheit und Standardbibliothek es ideal.

Die Flexibilität von Python spiegelt sich in Multi-Paradigm-Unterstützung und dynamischen Typsystemen wider, während eine einfache Syntax und eine reichhaltige Standardbibliothek stammt. 1. Flexibilität: Unterstützt objektorientierte, funktionale und prozedurale Programmierung und dynamische Typsysteme verbessern die Entwicklungseffizienz. 2. Benutzerfreundlichkeit: Die Grammatik liegt nahe an der natürlichen Sprache, die Standardbibliothek deckt eine breite Palette von Funktionen ab und vereinfacht den Entwicklungsprozess.

Python ist für seine Einfachheit und Kraft sehr beliebt, geeignet für alle Anforderungen von Anfängern bis hin zu fortgeschrittenen Entwicklern. Seine Vielseitigkeit spiegelt sich in: 1) leicht zu erlernen und benutzten, einfachen Syntax; 2) Reiche Bibliotheken und Frameworks wie Numpy, Pandas usw.; 3) plattformübergreifende Unterstützung, die auf einer Vielzahl von Betriebssystemen betrieben werden kann; 4) Geeignet für Skript- und Automatisierungsaufgaben zur Verbesserung der Arbeitseffizienz.

Ja, lernen Sie Python in zwei Stunden am Tag. 1. Entwickeln Sie einen angemessenen Studienplan, 2. Wählen Sie die richtigen Lernressourcen aus, 3. Konsolidieren Sie das durch die Praxis erlernte Wissen. Diese Schritte können Ihnen helfen, Python in kurzer Zeit zu meistern.


Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

PHPStorm Mac-Version
Das neueste (2018.2.1) professionelle, integrierte PHP-Entwicklungstool

SAP NetWeaver Server-Adapter für Eclipse
Integrieren Sie Eclipse mit dem SAP NetWeaver-Anwendungsserver.

SublimeText3 Englische Version
Empfohlen: Win-Version, unterstützt Code-Eingabeaufforderungen!

Herunterladen der Mac-Version des Atom-Editors
Der beliebteste Open-Source-Editor

Dreamweaver Mac
Visuelle Webentwicklungstools