


Implémentation simple de la fonction d'envoi et de réception d'emails en python
Cet article vous apprend principalement à implémenter simplement la fonction d'envoi et de réception d'e-mails en python. Les points clés de connaissance sont l'utilisation des modules poplib et stmplib intégrés à python. Il a une certaine valeur de référence. Les amis intéressés peuvent s'y référer. J'espère que cela pourra aider tout le monde.
1. Préparation
Tout d'abord, nous devons avoir un e-mail de test et effectuer les réglages suivants :
Recherchez Paramètres->Plus de paramètres dans le coin supérieur droit de la page d'accueil de Sina Mail, puis sélectionnez "Client/pop/imap/smtp" sur la gauche :
Enfin, activez l'état du service Pop3/smtp :
2. poplib reçoit le courrier
Tout d'abord, introduisez quelques interfaces pour la boîte aux lettres de connexion poplib et le téléchargement du courrier :
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'
Nous avons besoin de quelques constantes comme ci-dessus pour spécifier la boîte aux lettres de connexion et le pop, le serveur smtp et le port. Nous appelons l'interface POP3_SSL de poplib pour nous connecter à la boîte mail.
# 登录邮箱 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()
Lors de la connexion à l'e-mail, il est naturel que nous devions fournir un nom d'utilisateur et un mot de passe. Comme le montre le code ci-dessus, il est très simple à utiliser.
Après nous être connecté avec succès à la boîte aux lettres, nous pouvons utiliser la méthode de liste pour obtenir les informations de messagerie de la boîte aux lettres. On voit la définition de la méthode list :
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')
On voit le commentaire de la méthode list, dont la signification chinoise est que la méthode list a un paramètre par défaut qui, dont la valeur par défaut est None, lorsque l'appelant ne lui donne pas de paramètre, cette méthode listera les informations de tous les emails, et son formulaire de retour est [response, ['msg_number, octets', ...], octets], où réponse est le résultat de la réponse, msg_number est l'e-mail nombre, et les octets sont une unité d'octets de 8 bits. Jetons un coup d'œil à un exemple spécifique :
('+OK ', ['1 2424', '2 2422'], 16)
Ceci est le résultat renvoyé après avoir appelé la méthode list(). Évidemment, il s'agit d'un tuple. La première valeur sahib répond par '+OK', indiquant que la requête a réussi. La deuxième valeur est un tableau qui stocke les informations de courrier électronique. Par exemple, 1 sur « 1 2424 » signifie que le numéro de courrier électronique est 1.
Voyons comment utiliser poplib pour télécharger des e-mails.
# 获取邮件 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
L'interface de poplib pour obtenir le contenu des e-mails est la méthode retr. Cela nécessite un paramètre, qui est le numéro de courrier électronique à obtenir. Voici la définition de la méthode retr :
def retr(self, which): """Retrieve whole message number 'which'. Result is in form ['response', ['line', ...], octets]. """ return self._longcmd('RETR %s' % which)
Nous voyons les commentaires et savons que la méthode retr peut obtenir l'intégralité du contenu de l'email avec le numéro spécifié, et son formulaire de retour est [réponse, ['line', .. .], octets], on peut voir que le contenu de l'e-mail est stocké dans le deuxième élément du tuple renvoyé, et sa forme de stockage est un tableau. Testons à quoi ressemble ce tableau.
On voit que la forme de stockage de ce tableau s'apparente à un dict ! Ainsi, nous pouvons trouver tout ce qui nous intéresse sur cette base. Par exemple, si notre exemple de code doit trouver le sujet et l'expéditeur de l'e-mail, il peut être écrit comme le code ci-dessus. Bien sûr, vous pouvez également utiliser la correspondance régulière~~~ Voici les résultats du test :
Eh bien... vous pouvez l'essayer vous-même.
3. Smtp envoie un e-mail
Comme pop, vous devez lui fournir certaines constantes requises avant d'utiliser smtp :
self.mail_box = smtplib.SMTP(self.smtpHost, self.port) self.mail_box.login(self.userName, self.passWord)
Ce qui précède est le code pour se connecter à la boîte aux lettres en utilisant smtp, qui est similaire à pop. Le code pour envoyer des emails via smtp est donné ci-dessous. Vous verrez à quel point Python est simple et beau !
# 发送邮件 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)
C'est le code pour envoyer des emails en utilisant smtp en python ! C'est très simple ! Très pratique ! Très facile à comprendre ! La méthode principale ici est sendmail. Spécifiez simplement l'expéditeur, le destinataire et le contenu de l'e-mail. Il existe également MIMEText, qui peut être défini comme suit :
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)
Voir les commentaires~~~ Il s'agit simplement d'une méthode pour générer un document MIME avec un contenu et un encodage spécifiés. Au fait, jetons un coup d'œil à la méthode sendmail~~~
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... C'est tout pour l'envoi d'e-mails via smtp.
4. Code source et 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()
Le code ci-dessus se connecte d'abord à la boîte aux lettres, puis reçoit le premier e-mail et le supprime, et puis récupère l'e-mail. L'objet et l'expéditeur sont imprimés, et enfin un e-mail réussi est envoyé à une autre boîte aux lettres bossMail.
Les résultats des tests sont les suivants :
D'accord, vous pouvez copier le code ci-dessus et jouer avec vous-même
Recommandations associées :
Envoyer et recevoir des e-mails en python
thinkphp implémente 163. Comment envoyer et recevoir des e-mails dans QQ mailbox_PHP
Envoyer et recevoir des emails avec php
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Vous pouvez apprendre les concepts de programmation de base et les compétences de Python dans les 2 heures. 1. Apprenez les variables et les types de données, 2. Flux de contrôle maître (instructions et boucles conditionnelles), 3. Comprenez la définition et l'utilisation des fonctions, 4. Démarrez rapidement avec la programmation Python via des exemples simples et des extraits de code.

Python est largement utilisé dans les domaines du développement Web, de la science des données, de l'apprentissage automatique, de l'automatisation et des scripts. 1) Dans le développement Web, les cadres Django et Flask simplifient le processus de développement. 2) Dans les domaines de la science des données et de l'apprentissage automatique, les bibliothèques Numpy, Pandas, Scikit-Learn et Tensorflow fournissent un fort soutien. 3) En termes d'automatisation et de script, Python convient aux tâches telles que les tests automatisés et la gestion du système.

Il est impossible de visualiser le mot de passe MongoDB directement via NAVICAT car il est stocké sous forme de valeurs de hachage. Comment récupérer les mots de passe perdus: 1. Réinitialiser les mots de passe; 2. Vérifiez les fichiers de configuration (peut contenir des valeurs de hachage); 3. Vérifiez les codes (May Code Hardcode).

En tant que professionnel des données, vous devez traiter de grandes quantités de données provenant de diverses sources. Cela peut poser des défis à la gestion et à l'analyse des données. Heureusement, deux services AWS peuvent aider: AWS Glue et Amazon Athena.

Les étapes pour démarrer un serveur Redis incluent: Installez Redis en fonction du système d'exploitation. Démarrez le service Redis via Redis-Server (Linux / MacOS) ou Redis-Server.exe (Windows). Utilisez la commande redis-Cli Ping (Linux / MacOS) ou redis-Cli.exe Ping (Windows) pour vérifier l'état du service. Utilisez un client redis, tel que redis-cli, python ou node.js pour accéder au serveur.

Pour lire une file d'attente à partir de Redis, vous devez obtenir le nom de la file d'attente, lire les éléments à l'aide de la commande LPOP et traiter la file d'attente vide. Les étapes spécifiques sont les suivantes: Obtenez le nom de la file d'attente: Nommez-le avec le préfixe de "Fitre:" tel que "Fitre: My-Quyue". Utilisez la commande LPOP: éjectez l'élément de la tête de la file d'attente et renvoyez sa valeur, telle que la file d'attente LPOP: My-Queue. Traitement des files d'attente vides: si la file d'attente est vide, LPOP renvoie NIL et vous pouvez vérifier si la file d'attente existe avant de lire l'élément.

Question: Comment afficher la version Redis Server? Utilisez l'outil de ligne de commande redis-Cli --version pour afficher la version du serveur connecté. Utilisez la commande Info Server pour afficher la version interne du serveur et devez analyser et retourner des informations. Dans un environnement de cluster, vérifiez la cohérence de la version de chaque nœud et peut être vérifiée automatiquement à l'aide de scripts. Utilisez des scripts pour automatiser les versions de visualisation, telles que la connexion avec les scripts Python et les informations d'impression.

La sécurité du mot de passe de Navicat repose sur la combinaison de cryptage symétrique, de force de mot de passe et de mesures de sécurité. Des mesures spécifiques incluent: l'utilisation de connexions SSL (à condition que le serveur de base de données prenne en charge et configure correctement le certificat), à la mise à jour régulièrement de NAVICAT, en utilisant des méthodes plus sécurisées (telles que les tunnels SSH), en restreignant les droits d'accès et, surtout, à ne jamais enregistrer de mots de passe.
