Maison  >  Article  >  développement back-end  >  Partagez un exemple de la façon d'implémenter SMTP pour envoyer des e-mails à l'aide de Python

Partagez un exemple de la façon d'implémenter SMTP pour envoyer des e-mails à l'aide de Python

零下一度
零下一度original
2017-05-24 14:09:351942parcourir

Cet article présente principalement un tutoriel détaillé sur la façon d'implémenter l'envoi d'e-mails SMTP en Python, avec le code d'envoi d'e-mails SMTP ci-joint. Les amis intéressés peuvent se référer à

Introduction

<.> Tutoriels pour envoyer des e-mails avec Python. J'en ai trouvé beaucoup lors de la recherche sur le site Web, mais ils parlaient tous de nombreux principes puis présentaient le code d'implémentation. Lorsque j'ai testé l'utilisation du code donné pour envoyer des e-mails, cela n'a pas abouti. . Il m'a fallu beaucoup de temps pour trouver la raison. Tout cela était dû au manque de débogage détaillé de l'environnement, je vais donc fournir aujourd'hui un didacticiel détaillé, étape par étape, du débogage de l'environnement à l'implémentation du code. J'ai encore du mal à trouver des solutions. Je n'ai pas pu obtenir l'aide de quelqu'un qui puisse le résoudre efficacement.

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 . menu inférieur 🎜>"POP3/SMTP/IMAP"

3. , les deux cases rouges ci-dessus doivent être cochées. Si elle n'est pas cochée, vous pouvez la cocher si vous souhaitez l'activer. Ensuite, vous pouvez voir que la case rouge ci-dessous est

 : Serveur SMTP :smtp.163.com

Code d'implémentation

Après les paramètres ci-dessus, l'environnement sera débogué. D'accord, le code peut être implémenté ci-dessous. Il est recommandé d'utiliser pycharm4.5.3editor

pour écrire le code. Le code suivant peut être utilisé à la fois dans python2.7. et tests de version python3.4.

Si l'envoi réussit, ok sera renvoyé, sinon l'exécution échoue, comme indiqué ci-dessous :

#coding:utf-8  #强制使用utf-8编码格式
import smtplib #加载smtplib模块
from email.mime.text import MIMEText
from email.utils import formataddr
my_sender=&#39;发件人邮箱账号&#39; #发件人邮箱账号,为了后面易于维护,所以写成了变量
my_user=&#39;收件人邮箱账号&#39; #收件人邮箱账号,为了后面易于维护,所以写成了变量
def mail():
  ret=True
  try:
    msg=MIMEText(&#39;填写邮件内容&#39;,&#39;plain&#39;,&#39;utf-8&#39;)
    msg[&#39;From&#39;]=formataddr(["发件人邮箱昵称",my_sender])  #括号里的对应发件人邮箱昵称、发件人邮箱账号
    msg[&#39;To&#39;]=formataddr(["收件人邮箱昵称",my_user])  #括号里的对应收件人邮箱昵称、收件人邮箱账号
    msg[&#39;Subject&#39;]="主题" #邮件的主题,也可以说是标题

    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

Élargir les horizons

Bien que le code puisse être utilisé, certaines personnes aiment inévitablement jouer avec et casser le code en jouant, 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",line2SyntaxError:Non-ASCIIcharacter'xe5'infileF:/python/s12 /pymail.pyonline2,butnoencodingdeclare

d; seehttp://www.python.org/peps/pep-0263.htmlf

ordetailsDonc, quand ce qui précède Un message d'erreur d'encodage apparaît, vous pouvez l'ajouter à la première ligne de la page

#coding:utf-8

#Forcer l'encodage vers utf-8

ou

#coding:GBK

#Force Encoded as GBK

[Recommandations associées]

1.
Introduction détaillée à Python utilisant SMTP pour envoyer des e-mails

2. Résumé du code Python pour l'envoi d'e-mails à l'aide de SMTP

3 c# appelle qq mailbox smtp pour envoyer des e-mails avec le code de version modifié<.>

4. Python utilise SMTP pour envoyer des e-mails

5 php smtp envoie des e-mails

6 Explication détaillée de Python. Module de messagerie SMTP

7. Le module Python smtplib envoie un exemple de courrier électronique sécurisé SSL/TLS

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!

Déclaration:
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