Introduction
Lorsque j'ai cherché sur le site, j'ai trouvé de nombreux tutoriels pour envoyer des emails en Python, mais ils parlaient tous de beaucoup de principes puis lançaient le code d'implémentation. Lorsque j'ai essayé d'utiliser le code donné pour envoyer des e-mails, cela a échoué. Il m'a fallu beaucoup de temps pour trouver la raison. Cela était dû au manque de débogage détaillé de l'environnement. Je vais donc vous fournir aujourd'hui un didacticiel détaillé, étape par étape. Débogage de l'environnement vers le code. En implémentant l'intégralité du didacticiel, j'espère qu'il sera utile à ceux qui ont encore du mal à trouver une solution mais ne parviennent pas à obtenir une solution efficace.
Protocole SMTP
Comprenez d'abord SMTP (Simple Mail Transfer Protocol). L'agent de transfert de courrier utilise le protocole SMTP pour envoyer des e-mails au serveur de messagerie du destinataire. Le protocole SMTP ne peut être utilisé que pour envoyer des e-mails, pas pour en recevoir, et la plupart des serveurs d'envoi d'e-mails utilisent le protocole SMTP. Le numéro de port TCP par défaut pour le protocole SMTP est 25.
Débogage de l'environnement
Comme mentionné ci-dessus, l'e-mail est envoyé en utilisant le protocole SMTP, vous devez donc d'abord vérifier si le protocole SMTP est activé dans la boîte aux lettres de votre expéditeur Si ce n'est pas le cas, ce n'est pas nécessaire. J'ai testé en utilisant la boîte aux lettres 163.com comme boîte aux lettres de l'expéditeur. Activez le protocole SMTP comme indiqué dans la figure ci-dessous.
1. Connectez-vous d'abord à la boîte aux lettres 163.com (boîte aux lettres NetEase), comme indiqué ci-dessous
2. Lorsque vous voyez une option "Paramètres" dans la barre de fonctions au-dessus de la boîte aux lettres, cliquez sur l'option, puis sélectionnez "POP3/SMTP dans le menu déroulant /IMAP »
3 Comme le montre l'image ci-dessous, les deux cases rouges ci-dessus doivent être cochées. Sinon. , choisissez de les activer. Vous pouvez le vérifier, puis vous pourrez voir dans la case rouge ci-dessous : Serveur SMTP : smtp.163.com
Implémentation du code
Après les paramètres ci-dessus, l'environnement a été débogué et le code peut être implémenté ci-dessous. Il est recommandé d'utiliser l'éditeur pycharm4 .5.3 pour écrire du code, le code suivant peut être utilisé dans les tests des versions python2.7 et python3.4.
#coding:utf-8 #强制使用utf-8编码格式 import smtplib #加载smtplib模块 from email.mime.text import MIMEText from email.utils import formataddr my_sender='发件人邮箱账号' #发件人邮箱账号,为了后面易于维护,所以写成了变量 my_user='收件人邮箱账号' #收件人邮箱账号,为了后面易于维护,所以写成了变量 def mail(): ret=True try: msg=MIMEText('填写邮件内容','plain','utf-8') msg['From']=formataddr(["发件人邮箱昵称",my_sender]) #括号里的对应发件人邮箱昵称、发件人邮箱账号 msg['To']=formataddr(["收件人邮箱昵称",my_user]) #括号里的对应收件人邮箱昵称、收件人邮箱账号 msg['Subject']="主题" #邮件的主题,也可以说是标题 server=smtplib.SMTP("smtp.xxx.com",25) #发件人邮箱中的SMTP服务器,端口是25 server.login(my_sender,"发件人邮箱密码") #括号中对应的是发件人邮箱账号、邮箱密码 server.sendmail(my_sender,[my_user,],msg.as_string()) #括号中对应的是发件人邮箱账号、收件人邮箱账号、发送邮件 server.quit() #这句是关闭连接的意思 except Exception: #如果try中的语句没有执行,则会执行下面的ret=False ret=False return ret ret=mail() if ret: print("ok") #如果发送成功则会返回ok,稍等20秒左右就可以收到邮件 else: print("filed") #如果发送失败则会返回filed
Si l'envoi réussit, ok sera renvoyé, sinon l'exécution échoue, comme indiqué ci-dessous :
Élargir les horizons
Bien que le code puisse être utilisé, certaines personnes aiment forcément déconner et jouer avec le code. En panne, voici donc quelques points de connaissances pour dissiper vos doutes.
1. Je vois qu'il n'y a pas de "#coding:utf-8" dans la première ligne du code ci-dessus. Je crois que beaucoup de gens qui lisent ce code n'y prêtent pas beaucoup d'attention. , cela n'a rien à voir avec l'implémentation du code. Sélectionnez simplement le format utf-8 lors de la sauvegarde ; laissez-moi vous dire, cette ligne de code est très importante en python. Il est préférable d'ajouter un encodage de caractères obligatoire à chaque page, car le La version python2 reconnaît l'encodage ASCII par défaut, donc lorsque les caractères chinois ne le reconnaîtront pas lorsqu'ils apparaissent en python, et le message d'erreur qui apparaît est le suivant :
Message d'erreur Exemple : Fichier"F:/python/s12/pymail.py",line2
SyntaxError:Non-ASCIIcharacter'xe5'infileF:/python/s12 /pymail.pyonline2,butnoencodingdeclared;seehttp://www.php.cn/
Ainsi, lorsque le message d'erreur d'encodage ci-dessus apparaît, vous pouvez ajouter
#coding:utf-8 # pour forcer l'encodage en utf sur la première ligne de la page -8
ou
#coding:GBK #Forcer l'encodage en GBK
Ce qui précède représente l'intégralité du contenu de cet article, j'espère qu'il sera utile à tout le monde pour apprendre l'aide, et j'espère que tout le monde soutiendra le site Web PHP chinois.
Pour des tutoriels plus détaillés sur la façon d'implémenter les e-mails SMTP en Python et des articles connexes, veuillez prêter attention au site Web PHP chinois !