Utilisez Python pour envoyer et recevoir un exemple de code par e-mail

高洛峰
Libérer: 2017-03-21 13:44:49
original
1701 Les gens l'ont consulté

À propos du courrier électronique

Avant l'université, je n'utilisais pratiquement pas le courrier électronique, donc je ne ressentais pas son existence et je ne connaissais pas son utilisation, cependant, après l'université, au fur et à mesure que j'en savais davantage ; et de plus en plus de gens, mes connaissances Cela devient de plus en plus répandu et le courrier électronique est devenu un outil de communication très important. Certains cours universitaires nécessitent l'envoi d'un courrier électronique aux enseignants, l'inscription sur un site Web nécessite un courrier électronique et la recherche d'emploi également. nécessite un email. Alors quel est le principe d'un email ?

Envoi de mail

Protocole SMTP

SMTP (Simple Mail Transfer Protocol) est un protocole de transfert de courrier simple. Il s'agit d'un ensemble de protocoles utilisés pour transférer le courrier de l'adresse source à l'adresse de destination. Règles qui régissent la façon dont les lettres sont relayées. Le protocole SMTP appartient à la suite de protocoles TCP/IP, qui aide chaque ordinateur à trouver la prochaine destination lors de l'envoi ou du relais de lettres. Grâce au serveur spécifié par le protocole SMTP, vous pouvez envoyer l'e-mail au serveur du destinataire en quelques minutes seulement.

Module SMTP en python

Étapes de base pour utiliser SMTP

  1. Se connecter au serveur

  2. Connexion

  3. Envoyer la demande de service

  4. Déconnexion

import smtplib
from email import encoders
from email.header import Header
from email.mime.text import MIMEText
from email.utils import parseaddr, formataddr



def send_email(from_addr, to_addr, subject, password):
    msg = MIMEText("邮件正文",'html','utf-8')
    msg['From'] = u'<%s>' % from_addr
    msg['To'] = u'<%s>' % to_addr
    msg['Subject'] = subject

    smtp = smtplib.SMTP_SSL('smtp.163.com', 465)
    smtp.set_debuglevel(1)
    smtp.ehlo("smtp.163.com")
    smtp.login(from_addr, password)
    smtp.sendmail(from_addr, [to_addr], msg.as_string())


if name == "main":
    # 这里的密码是开启smtp服务时输入的客户端登录授权码,并不是邮箱密码
    # 现在很多邮箱都需要先开启smtp才能这样发送邮件
    send_email(u"from_addr",u"to_addr",u"主题",u"password")
Copier après la connexion

Ce qui précède montre l'utilisation de smtplib pour envoyer des e-mails et utilise le cryptage SSL, qui est relativement sûr. L'e-mail est utilisé pour construire le contenu de l'e-mail. Ce qui est envoyé ici est du contenu en texte brut, je pense. la chose importante à laquelle il faut prêter attention est le mot de passe e-mail ici. De plus, les serveurs de messagerie et les ports de chaque entreprise peuvent être différents. Vous pouvez vérifier avant d'utiliser

Voici quelques-uns couramment utilisés :

邮箱 SMTP服务器 SSL协议端口 非SSL协议端口
163 smtp.163.com 465或者994 25
qq smtp.11.com 465或587 25

Recevoir du courrier

POP3 et IMAP

POP fait référence au protocole du bureau de poste, qui vise à permettre aux utilisateurs d'accéder au courrier sur le serveur de boîte aux lettres et de permettre aux utilisateurs de stocker le courrier à partir du vers l'hôte local (c'est-à-dire votre propre ordinateur) et supprimez en même temps les e-mails enregistrés sur le serveur de messagerie. Le serveur POP3 est un serveur de réception de courrier qui suit le protocole POP3 et est utilisé pour recevoir des e-mails.

Plus tard, le protocole IMAP (Interactive Mail Access Protocol) est apparu, qui est le protocole d'accès interactif au courrier. La différence avec POP3 est qu'une fois IMAP activé, les courriers reçus dans le client de messagerie sont toujours conservés. le serveur. , et en même temps, les opérations sur le client seront renvoyées au serveur, telles que la suppression des e-mails, leur marquage comme lus, etc., et les e-mails sur le serveur prendront également les actions correspondantes.

Utiliser POP3

Le module poplib de Python prend en charge POP3, étapes de base :

  1. Se connecter au serveur

  2. Connexion

  3. Émettre une demande de service

  4. Quitter

Méthodes courantes pour poplib :

Méthode Description
POP3(serveur) Instancier POP3Objet
方法 描述
POP3(server) 实例化POP3对象,server是pop服务器地址
user(username) 发送用户名到服务器,等待服务器返回信息
pass_(password) 密码
stat() 返回邮箱的状态,返回2元祖(消息的数量,消息的总字节)
list([msgnum]) stat()的扩展,返回一个3元祖(返回信息, 消息列表, 消息的大小),如果指定msgnum,就只返回指定消息的数据
retr(msgnum) 获取详细msgnum,设置为已读,返回3元组(返回信息, 消息msgnum的所以内容, 消息的字节数),如果指定msgnum,就只返回指定消息的数据
dele(msgnum) 将指定消息标记为删除
quit() 登出,保存修改,解锁邮箱,结束连接,退出
, serveur Est-ce l'adresse du serveur pop
user(username) Envoyer le nom d'utilisateur au serveur et attendre que le serveur renvoie des informations tr>
pass_(mot de passe) Mot de passe
stat () Renvoie le statut

de la boîte aux lettres, en renvoyant 2 éléments ( le nombre de messages, le nombre total de messages Octets)

list([msgnum]) Extension de stat(), renvoyant un ancêtre de 3 tuples (informations de retour, liste de messages, taille du message), si msgnum est spécifié, seules les données du message spécifié seront renvoyées
retr(msgnum) Obtenir les détails msgnum, défini sur read, renvoie un 3-tuple (renvoie des informations, tout le contenu du message msgnum, le nombre d'octets du message si msgnum est spécifié). seules les données du message spécifié seront renvoyées
dele(msgnum) Marquer le message spécifié pour suppression
quit() Déconnectez-vous, enregistrez les modifications, déverrouillez la boîte aux lettres, mettez fin à la connexion, quittez
Exemple
from poplib import POP3

p = POP3('pop.163.com')
p.user('xxxxxxx@163.com')
p.pass_('xxxxxxxx')

p.stat()
...

p.quit()
Copier après la connexion

Utiliser IMAP

Le package imaplib en python prend en charge IMAP4

Méthodes courantes :
方法 描述
IMAP4(server) 与IMAP服务器建立连接
login(user, pass) 用户密码登录
list() 查看所有的文件夹(IMAP可以支持创建文件夹)
select() 选择文件夹默认是"INBOX"
search() 三个参数,第一的是CHARSET,通常为None(ASCII),第二个参数不知到是干什么官方没解释

Exemple
import getpass, imaplib

M = imaplib.IMAP4()
M.login(getpass.getuser(), getpass.getpass())
M.select()
typ, data = M.search(None, 'ALL')
for num in data[0].split():
    typ, data = M.fetch(num, '(RFC822)')
    print 'Message %s\n%s\n' % (num, data[0][1])
M.close()
M.logout()
Copier après la connexion

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal