


Einfache Implementierung der Funktion zum Senden und Empfangen von E-Mails in Python
In diesem Artikel erfahren Sie hauptsächlich, wie Sie die Funktion zum Senden und Empfangen von E-Mails in Python einfach implementieren. Die wichtigsten Wissenspunkte sind die Verwendung der in Python integrierten Module Poplib und Stmplib. Es hat einen gewissen Referenzwert. Ich hoffe, es kann jedem helfen.
1. Vorbereitung
Zuerst benötigen wir eine Test-E-Mail und nehmen folgende Einstellungen vor:
Suchen Sie Einstellungen -> Weitere Einstellungen in der oberen rechten Ecke der Sina Mail-Startseite und wählen Sie dann links „Client/pop/imap/smtp“ aus:
Schließlich aktivieren Sie den Dienststatus des Pop3/SMTP-Dienstes:
2. Poplib empfängt E-Mails
Führen Sie zunächst einige Schnittstellen für das Poplib-Anmeldepostfach und das Herunterladen von E-Mails ein:
self.popHost = 'pop.sina.com' self.smtpHost = 'smtp.sina.com' self.port = 25 self.userName = 'xxxxxx@sina.com' self.passWord = 'xxxxxx' self.bossMail = 'xxxxxx@qq.com'
Wir benötigen einige Konstanten wie oben, um das Anmeldepostfach und Pop, den SMTP-Server und den Port anzugeben. Wir rufen die POP3_SSL-Schnittstelle von Poplib auf, um uns beim Postfach anzumelden.
# 登录邮箱 def login(self): try: self.mailLink = poplib.POP3_SSL(self.popHost) self.mailLink.set_debuglevel(0) self.mailLink.user(self.userName) self.mailLink.pass_(self.passWord) self.mailLink.list() print u'login success!' except Exception as e: print u'login fail! ' + str(e) quit()
Bei der Anmeldung per E-Mail müssen wir natürlich einen Benutzernamen und ein Passwort angeben. Wie im obigen Code gezeigt, ist die Verwendung sehr einfach.
Nachdem wir uns erfolgreich beim Postfach angemeldet haben, können wir die Listenmethode verwenden, um die E-Mail-Informationen des Postfachs abzurufen. Wir sehen die Definition der Listenmethode:
def list(self, which=None): """Request listing, return result. Result without a message number argument is in form ['response', ['mesg_num octets', ...], octets]. Result when a message number argument is given is a single response: the "scan listing" for that message. """ if which is not None: return self._shortcmd('LIST %s' % which) return self._longcmd('LIST')
Wir sehen den Kommentar der Listenmethode, dessen chinesische Bedeutung darin besteht, dass die Listenmethode beim Aufrufen einen Standardparameter hat, dessen Standardwert None ist Gibt es keinen Parameter an, listet diese Methode die Informationen aller E-Mails auf und ihr Rückgabeformular ist [Antwort, ['Nachrichtennummer, Oktette', ...], Oktette], wobei Antwort das Antwortergebnis und Nachrichtennummer die E-Mail ist Zahl und Oktette sind 8-Bit-Byte-Einheiten. Schauen wir uns ein konkretes Beispiel an:
('+OK ', ['1 2424', '2 2422'], 16)
Dies ist das Rückgabeergebnis nach dem Aufruf der list()-Methode. Offensichtlich handelt es sich hierbei um ein Tupel. Der erste Wert antwortet mit „+OK“, was anzeigt, dass die Anfrage erfolgreich ist. Der zweite Wert ist ein Array, das die E-Mail-Informationen speichert. Beispielsweise bedeutet 1 in „1 2424“, dass die E-Mail-Nummer 1 ist.
Sehen wir uns an, wie man Poplib zum Herunterladen von E-Mails verwendet.
# 获取邮件 def retrMail(self): try: mail_list = self.mailLink.list()[1] if len(mail_list) == 0: return None mail_info = mail_list[0].split(' ') number = mail_info[0] mail = self.mailLink.retr(number)[1] self.mailLink.dele(number) subject = u'' sender = u'' for i in range(0, len(mail)): if mail[i].startswith('Subject'): subject = mail[i][9:] if mail[i].startswith('X-Sender'): sender = mail[i][10:] content = {'subject': subject, 'sender': sender} return content except Exception as e: print str(e) return None
Poplibs Schnittstelle zum Abrufen von E-Mail-Inhalten ist die Retr-Methode. Es ist ein Parameter erforderlich, nämlich die zu erhaltende E-Mail-Nummer. Das Folgende ist die Definition der retr-Methode:
def retr(self, which): """Retrieve whole message number 'which'. Result is in form ['response', ['line', ...], octets]. """ return self._longcmd('RETR %s' % which)
Wir sehen die Kommentare und wissen, dass die retr-Methode den gesamten Inhalt der E-Mail mit der angegebenen Nummer abrufen kann und ihr Rückgabeformular [Antwort, ['line', .. .], octets], es ist ersichtlich, dass der Inhalt der E-Mail im zweiten Element des zurückgegebenen Tupels gespeichert ist und seine Speicherform ein Array ist. Lassen Sie uns testen, wie dieses Array aussieht.
Wir können sehen, dass die Speicherform dieses Arrays einem Diktat ähnelt! Auf dieser Grundlage können wir alles finden, was uns interessiert. Wenn unser Beispielcode beispielsweise den Betreff und den Absender der E-Mail ermitteln soll, kann er wie der obige Code geschrieben werden. Natürlich können Sie auch das reguläre Matching verwenden~~~ Hier sind die Testergebnisse:
Nun... Sie können es selbst ausprobieren.
3. Smtp sendet E-Mail
Wie bei Pop müssen Sie es vor der Verwendung von SMTP mit einigen erforderlichen Konstanten versehen:
self.mail_box = smtplib.SMTP(self.smtpHost, self.port) self.mail_box.login(self.userName, self.passWord)
Das Obige ist der Code zum Anmelden beim Postfach über SMTP, ähnlich wie bei Pop. Der Code zum Senden von E-Mails über SMTP ist unten angegeben. Sie werden sehen, wie einfach und schön Python ist!
# 发送邮件 def sendMsg(self, mail_body='Success!'): try: msg = MIMEText(mail_body, 'plain', 'utf-8') msg['Subject'] = mail_body msg['from'] = self.userName self.mail_box.sendmail(self.userName, self.bossMail, msg.as_string()) print u'send mail success!' except Exception as e: print u'send mail fail! ' + str(e)
Dies ist der Code zum Senden von E-Mails mit SMTP in Python! Es ist ganz einfach! Sehr praktisch! Sehr leicht zu verstehen! Die Hauptmethode ist hier sendmail. Geben Sie einfach den Absender, den Empfänger und den E-Mail-Inhalt an. Es gibt auch MIMEText, der wie folgt definiert werden kann:
class MIMEText(MIMENonMultipart): """Class for generating text/* type MIME documents.""" def __init__(self, _text, _subtype='plain', _charset='us-ascii'): """Create a text/* type MIME document. _text is the string for this message object. _subtype is the MIME sub content type, defaulting to "plain". _charset is the character set parameter added to the Content-Type header. This defaults to "us-ascii". Note that as a side-effect, the Content-Transfer-Encoding header will also be set. """ MIMENonMultipart.__init__(self, 'text', _subtype, **{'charset': _charset}) self.set_payload(_text, _charset)
Siehe die Kommentare~~~ Dies ist lediglich eine Methode zum Generieren eines MIME-Dokuments mit angegebenem Inhalt und angegebener Kodierung. Werfen wir übrigens einen Blick auf die sendmail-Methode~~~
def sendmail(self, from_addr, to_addrs, msg, mail_options=[], rcpt_options=[]): """This command performs an entire mail transaction. The arguments are: - from_addr : The address sending this mail. - to_addrs : A list of addresses to send this mail to. A bare string will be treated as a list with 1 address. - msg : The message to send. - mail_options : List of ESMTP options (such as 8bitmime) for the mail command. - rcpt_options : List of ESMTP options (such as DSN commands) for all the rcpt commands.
Hmm... Das war's auch schon mit dem Versenden von E-Mails über SMTP.
4. Quellcode und Tests
# -*- coding:utf-8 -*- from email.mime.text import MIMEText import poplib import smtplib class MailManager(object): def __init__(self): self.popHost = 'pop.sina.com' self.smtpHost = 'smtp.sina.com' self.port = 25 self.userName = 'xxxxxx@sina.com' self.passWord = 'xxxxxx' self.bossMail = 'xxxxxx@qq.com' self.login() self.configMailBox() # 登录邮箱 def login(self): try: self.mailLink = poplib.POP3_SSL(self.popHost) self.mailLink.set_debuglevel(0) self.mailLink.user(self.userName) self.mailLink.pass_(self.passWord) self.mailLink.list() print u'login success!' except Exception as e: print u'login fail! ' + str(e) quit() # 获取邮件 def retrMail(self): try: mail_list = self.mailLink.list()[1] if len(mail_list) == 0: return None mail_info = mail_list[0].split(' ') number = mail_info[0] mail = self.mailLink.retr(number)[1] self.mailLink.dele(number) subject = u'' sender = u'' for i in range(0, len(mail)): if mail[i].startswith('Subject'): subject = mail[i][9:] if mail[i].startswith('X-Sender'): sender = mail[i][10:] content = {'subject': subject, 'sender': sender} return content except Exception as e: print str(e) return None def configMailBox(self): try: self.mail_box = smtplib.SMTP(self.smtpHost, self.port) self.mail_box.login(self.userName, self.passWord) print u'config mailbox success!' except Exception as e: print u'config mailbox fail! ' + str(e) quit() # 发送邮件 def sendMsg(self, mail_body='Success!'): try: msg = MIMEText(mail_body, 'plain', 'utf-8') msg['Subject'] = mail_body msg['from'] = self.userName self.mail_box.sendmail(self.userName, self.bossMail, msg.as_string()) print u'send mail success!' except Exception as e: print u'send mail fail! ' + str(e) if __name__ == '__main__': mailManager = MailManager() mail = mailManager.retrMail() if mail != None: print mail mailManager.sendMsg()
Der obige Code meldet sich zuerst beim Postfach an, ruft dann die erste E-Mail ab und löscht sie Anschließend wird die E-Mail mit Betreff und Absender ausgedruckt und schließlich eine erfolgreiche E-Mail an ein anderes BossMail-Postfach gesendet.
Die Testergebnisse lauten wie folgt:
Okay, Sie können den obigen Code kopieren und selbst damit spielen
Verwandte Empfehlungen:
E-Mails in Python senden und empfangen
thinkphp implementiert 163. So senden und empfangen Sie E-Mails in QQ mailbox_PHP
E-Mails mit PHP senden und empfangen
Das obige ist der detaillierte Inhalt vonEinfache Implementierung der Funktion zum Senden und Empfangen von E-Mails in Python. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Um die Effizienz des Lernens von Python in einer begrenzten Zeit zu maximieren, können Sie Pythons DateTime-, Zeit- und Zeitplanmodule verwenden. 1. Das DateTime -Modul wird verwendet, um die Lernzeit aufzuzeichnen und zu planen. 2. Das Zeitmodul hilft, die Studie zu setzen und Zeit zu ruhen. 3. Das Zeitplanmodul arrangiert automatisch wöchentliche Lernaufgaben.

Python zeichnet sich in Gaming und GUI -Entwicklung aus. 1) Spielentwicklung verwendet Pygame, die Zeichnungen, Audio- und andere Funktionen bereitstellt, die für die Erstellung von 2D -Spielen geeignet sind. 2) Die GUI -Entwicklung kann Tkinter oder Pyqt auswählen. Tkinter ist einfach und einfach zu bedienen. PYQT hat reichhaltige Funktionen und ist für die berufliche Entwicklung geeignet.

Python eignet sich für Datenwissenschafts-, Webentwicklungs- und Automatisierungsaufgaben, während C für Systemprogrammierung, Spieleentwicklung und eingebettete Systeme geeignet ist. Python ist bekannt für seine Einfachheit und sein starkes Ökosystem, während C für seine hohen Leistung und die zugrunde liegenden Kontrollfunktionen bekannt ist.

Sie können grundlegende Programmierkonzepte und Fähigkeiten von Python innerhalb von 2 Stunden lernen. 1. Lernen Sie Variablen und Datentypen, 2. Master Control Flow (bedingte Anweisungen und Schleifen), 3.. Verstehen Sie die Definition und Verwendung von Funktionen, 4. Beginnen Sie schnell mit der Python -Programmierung durch einfache Beispiele und Code -Snippets.

Python wird in den Bereichen Webentwicklung, Datenwissenschaft, maschinelles Lernen, Automatisierung und Skripten häufig verwendet. 1) In der Webentwicklung vereinfachen Django und Flask Frameworks den Entwicklungsprozess. 2) In den Bereichen Datenwissenschaft und maschinelles Lernen bieten Numpy-, Pandas-, Scikit-Learn- und TensorFlow-Bibliotheken eine starke Unterstützung. 3) In Bezug auf Automatisierung und Skript ist Python für Aufgaben wie automatisiertes Test und Systemmanagement geeignet.

Sie können die Grundlagen von Python innerhalb von zwei Stunden lernen. 1. Lernen Sie Variablen und Datentypen, 2. Master -Steuerungsstrukturen wie wenn Aussagen und Schleifen, 3. Verstehen Sie die Definition und Verwendung von Funktionen. Diese werden Ihnen helfen, einfache Python -Programme zu schreiben.

Wie lehre ich innerhalb von 10 Stunden die Grundlagen für Computer -Anfänger für Programmierungen? Wenn Sie nur 10 Stunden Zeit haben, um Computer -Anfänger zu unterrichten, was Sie mit Programmierkenntnissen unterrichten möchten, was würden Sie dann beibringen ...

Wie kann man nicht erkannt werden, wenn Sie Fiddlereverywhere für Man-in-the-Middle-Lesungen verwenden, wenn Sie FiddLereverywhere verwenden ...


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

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

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

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

Dreamweaver CS6
Visuelle Webentwicklungstools

EditPlus chinesische Crack-Version
Geringe Größe, Syntaxhervorhebung, unterstützt keine Code-Eingabeaufforderungsfunktion