国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

Maison développement back-end Tutoriel Python Explication détaillée des principales méthodes d'envoi de différents types d'e-mails en python

Explication détaillée des principales méthodes d'envoi de différents types d'e-mails en python

Feb 23, 2017 pm 04:38 PM

Le module email en python facilite le traitement des emails. Cet article présente principalement les principales méthodes d'envoi de différents types d'emails en python. Ceux qui sont intéressés peuvent en savoir plus.

Le module de messagerie en python facilite le traitement des e-mails. Aujourd'hui, je me concentre sur l'apprentissage des méthodes spécifiques d'envoi d'e-mails. Je vais écrire ici ma propre expérience et demander conseil à des experts.

1. Introduction aux modules associés

Les modules Smtplib et email sont principalement utilisés pour envoyer des emails Voici une brève introduction aux deux modules :

1. module smtplib

smtplib.SMTP([host[, port[, local_hostname[, timeout]]]])

Classe SMTP Le constructeur représente la connexion avec le serveur SMTP. Grace à cette connexion, vous pouvez envoyer des instructions au serveur SMTP et effectuer des opérations associées (telles que la connexion, l'envoi d'e-mails). Tous les paramètres sont facultatifs.

host : nom d'h?te du serveur SMTP

port : port du service SMTP, la valeur par défaut est 25 ; si ces deux paramètres sont fournis lors de la création de l'objet SMTP, ils seront automatiquement appelés lors de l'initialisation de la méthode de connexion ; pour vous connecter au serveur.

Le module smtplib fournit également la classe SMTP_SSL et la classe LMTP, et leurs opérations sont fondamentalement les mêmes que SMTP.

Méthodes fournies par smtplib.SMTP?:

SMTP.set_debuglevel(level)?: Définissez s'il est en mode débogage. La valeur par défaut est False, qui est un mode sans débogage, ce qui signifie qu'aucune information de débogage ne sera générée.

SMTP.connect([host[, port]])?: Connectez-vous au serveur smtp spécifié. Les paramètres représentent respectivement l'h?te smpt et le port. Remarque : Vous pouvez également spécifier le numéro de port dans le paramètre host (ex : smpt.yeah.net:25), il n'est donc pas nécessaire de donner le paramètre port.

SMTP.docmd(cmd[, argstring])?: Envoie des instructions au serveur smtp. Le paramètre facultatif argstring représente les paramètres de l'instruction.

SMTP.helo([hostname])?: utilisez la commande "helo" pour confirmer l'identité au serveur. Cela équivaut à dire au serveur SMTP ? qui je suis ?.

SMTP.has_extn(name)?: Déterminez si le nom spécifié existe dans la liste de diffusion du serveur. Pour des raisons de sécurité, les serveurs SMTP bloquent souvent cette commande.

SMTP.verify(address)?: Déterminez si l'adresse e-mail spécifiée existe sur le serveur. Pour des raisons de sécurité, les serveurs SMTP bloquent souvent cette commande.

SMTP.login(user, password) : Connectez-vous au serveur smtp. Presque tous les serveurs SMTP doivent désormais vérifier que les informations utilisateur sont légitimes avant d'autoriser l'envoi d'e-mails.

SMTP.sendmail(from_addr, to_addrs, msg[, mail_options, rcpt_options])?: Envoyer un courrier. Faites attention au troisième paramètre ici. msg est une cha?ne représentant un e-mail. Nous savons que les e-mails se composent généralement d'un titre, de l'expéditeur, du destinataire, du contenu de l'e-mail, des pièces jointes, etc. Lors de l'envoi d'un e-mail, faites attention au format du msg. Ce format est le format défini dans le protocole smtp.

SMTP.quit()?: Se déconnecter du serveur SMTP, ce qui équivaut à envoyer la commande "quit". (smtp.close() est utilisé dans de nombreux programmes. J'ai cherché sur Google la différence entre quitter et quitter, mais je n'ai pas trouvé la réponse.)

Module de courrier électronique .

Le module emial est utilisé pour traiter les messages électroniques, y compris MIME et autres documents de message basés sur la RFC 2822. Il est très simple d'utiliser ces modules pour définir le contenu des emails. Les classes qu'il inclut sont (une introduction plus détaillée peut être trouvée sur?: http://www.miracleart.cn/)?:

class email.mime.base.MIMEBase(_maintype, _subtype, **_params)?: Il s'agit d'une classe de base pour MIME. Il n'est généralement pas nécessaire de créer une instance lors de son utilisation. Où _maintype est le type de contenu, tel que du texte ou une image. _subtype est le type mineur de contenu, tel que plain ou gif. **_params est un dictionnaire passé directement à Message.add_header().

class email.mime.multipart.MIMEMultipart([_subtype[, border[, _subparts[, _params]]]]?: Une sous-classe de MIMEBase, une collection de plusieurs objets MIME, la valeur par défaut de _subtype est mixte . La limite est la limite de MIMEMultipart. La limite par défaut est dénombrable

class email.mime.application.MIMEApplication(_data[, _subtype[, _encoder[, **_params]]])?: Une sous-classe de MIMEMultipart. .

class email.mime.audio.MIMEAudio(_audiodata[, _subtype[, _encoder[, **_params]]]) : objet audio MIME

class email.mime.image. MIMEImage (_imagedata[, _subtype[, _encoder[, **_params]]]) : objet fichier binaire MIME

class email.mime.message.MIMEMessage(_msg[, _subtype]) : une instance de message spécifique. , la méthode d'utilisation est la suivante?:

msg=mail.Message.Message()  #一個(gè)實(shí)例 
msg['to']='XXX@XXX.com'   #發(fā)送到哪里 
msg['from']='YYY@YYYY.com'    #自己的郵件地址 
msg['date']='2012-3-16'      #時(shí)間日期 
msg['subject']='hello world'  #郵件主題

class email.mime.text.MIMEText(_text[, _subtype[, _charset]])?: Objet texte MIME, Parmi eux, _text est le contenu de l'e-mail, le type d'e-mail _subtype, qui peut être text/plain (e-mail texte ordinaire), html/plain (e-mail html), l'encodage _charset, qui peut être gb2312, etc. codes d'implémentation pour plusieurs types d'e-mails

1. E-mails texte ordinaires

La clé de la mise en ?uvre de l'envoi d'e-mails texte ordinaires est de définir _subtype dans MIMEText sur plain. Importez d'abord smtplib et mimetext. Créez une instance smtplib.smtp, connectez-vous au serveur de messagerie smtp et envoyez-la après vous être connecté. Le code spécifique est le suivant?: (implémenté sous python2.6)

# -*- coding: UTF-8 -*-
'''
發(fā)送txt文本郵件
'''
import smtplib 
from email.mime.text import MIMEText 
mailto_list=[YYY@YYY.com] 
mail_host="smtp.XXX.com" #設(shè)置服務(wù)器
mail_user="XXXX"  #用戶名
mail_pass="XXXXXX"  #口令 
mail_postfix="XXX.com" #發(fā)件箱的后綴
 
def send_mail(to_list,sub,content): 
  me="hello"+"<"+mail_user+"@"+mail_postfix+">" 
  msg = MIMEText(content,_subtype=&#39;plain&#39;,_charset=&#39;gb2312&#39;) 
  msg[&#39;Subject&#39;] = sub 
  msg[&#39;From&#39;] = me 
  msg[&#39;To&#39;] = ";".join(to_list) 
  try: 
    server = smtplib.SMTP() 
    server.connect(mail_host) 
    server.login(mail_user,mail_pass) 
    server.sendmail(me, to_list, msg.as_string()) 
    server.close() 
    return True 
  except Exception, e: 
    print str(e) 
    return False 
if __name__ == &#39;__main__&#39;: 
  if send_mail(mailto_list,"hello","hello world!"): 
    print "發(fā)送成功" 
  else: 
    print "發(fā)送失敗"
2. Envoi d'e-mail html

與text郵件不同之處就是將將MIMEText中_subtype設(shè)置為html。具體代碼如下:(python2.6下實(shí)現(xiàn))

# -*- coding: utf-8 -*-
&#39;&#39;&#39;
發(fā)送html文本郵件
&#39;&#39;&#39;
import smtplib 
from email.mime.text import MIMEText 
mailto_list=["YYY@YYY.com"] 
mail_host="smtp.XXX.com" #設(shè)置服務(wù)器
mail_user="XXX"  #用戶名
mail_pass="XXXX"  #口令 
mail_postfix="XXX.com" #發(fā)件箱的后綴
 
def send_mail(to_list,sub,content): #to_list:收件人;sub:主題;content:郵件內(nèi)容
  me="hello"+"<"+mail_user+"@"+mail_postfix+">"  #這里的hello可以任意設(shè)置,收到信后,將按照設(shè)置顯示
  msg = MIMEText(content,_subtype=&#39;html&#39;,_charset=&#39;gb2312&#39;)  #創(chuàng)建一個(gè)實(shí)例,這里設(shè)置為html格式郵件
  msg[&#39;Subject&#39;] = sub  #設(shè)置主題
  msg[&#39;From&#39;] = me 
  msg[&#39;To&#39;] = ";".join(to_list) 
  try: 
    s = smtplib.SMTP() 
    s.connect(mail_host) #連接smtp服務(wù)器
    s.login(mail_user,mail_pass) #登陸服務(wù)器
    s.sendmail(me, to_list, msg.as_string()) #發(fā)送郵件
    s.close() 
    return True 
  except Exception, e: 
    print str(e) 
    return False 
if __name__ == &#39;__main__&#39;: 
  if send_mail(mailto_list,"hello","<a href=&#39;http://www.cnblogs.com/xiaowuyi&#39;>小五義</a>"): 
    print "發(fā)送成功" 
  else: 
    print "發(fā)送失敗"

3、發(fā)送帶附件的郵件

發(fā)送帶附件的郵件,首先要?jiǎng)?chuàng)建MIMEMultipart()實(shí)例,然后構(gòu)造附件,如果有多個(gè)附件,可依次構(gòu)造,最后利用smtplib.smtp發(fā)送。

# -*- coding: cp936 -*-
&#39;&#39;&#39;
發(fā)送帶附件郵件
&#39;&#39;&#39;

from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
import smtplib

#創(chuàng)建一個(gè)帶附件的實(shí)例
msg = MIMEMultipart()

#構(gòu)造附件1
att1 = MIMEText(open(&#39;d:\\123.rar&#39;, &#39;rb&#39;).read(), &#39;base64&#39;, &#39;gb2312&#39;)
att1["Content-Type"] = &#39;application/octet-stream&#39;
att1["Content-Disposition"] = &#39;attachment; filename="123.doc"&#39;#這里的filename可以任意寫(xiě),寫(xiě)什么名字,郵件中顯示什么名字
msg.attach(att1)

#構(gòu)造附件2
att2 = MIMEText(open(&#39;d:\\123.txt&#39;, &#39;rb&#39;).read(), &#39;base64&#39;, &#39;gb2312&#39;)
att2["Content-Type"] = &#39;application/octet-stream&#39;
att2["Content-Disposition"] = &#39;attachment; filename="123.txt"&#39;
msg.attach(att2)

#加郵件頭
msg[&#39;to&#39;] = &#39;YYY@YYY.com&#39;
msg[&#39;from&#39;] = &#39;XXX@XXX.com&#39;
msg[&#39;subject&#39;] = &#39;hello world&#39;
#發(fā)送郵件
try:
  server = smtplib.SMTP()
  server.connect(&#39;smtp.XXX.com&#39;)
  server.login(&#39;XXX&#39;,&#39;XXXXX&#39;)#XXX為用戶名,XXXXX為密碼
  server.sendmail(msg[&#39;from&#39;], msg[&#39;to&#39;],msg.as_string())
  server.quit()
  print &#39;發(fā)送成功&#39;
except Exception, e: 
  print str(e)

4、利用MIMEimage發(fā)送圖片

# -*- coding: cp936 -*-
import smtplib
import mimetypes
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.mime.image import MIMEImage

def AutoSendMail():
  msg = MIMEMultipart()
  msg[&#39;From&#39;] = "XXX@XXX.com"
  msg[&#39;To&#39;] = "YYY@YYY.com"
  msg[&#39;Subject&#39;] = "hello world"


  txt = MIMEText("這是中文的郵件內(nèi)容哦",&#39;plain&#39;,&#39;gb2312&#39;)   
  msg.attach(txt)
  

  file1 = "C:\\hello.jpg"
  image = MIMEImage(open(file1,&#39;rb&#39;).read())
  image.add_header(&#39;Content-ID&#39;,&#39;<image1>&#39;)
  msg.attach(image)
  
  
  server = smtplib.SMTP()
  server.connect(&#39;smtp.XXX.com&#39;)
  server.login(&#39;XXX&#39;,&#39;XXXXXX&#39;)
  server.sendmail(msg[&#39;From&#39;],msg[&#39;To&#39;],msg.as_string())
  server.quit()
  
if __name__ == "__main__":
  AutoSendMail()

利用MIMEimage發(fā)送圖片,原本是想圖片能夠在正文中顯示,可是代碼運(yùn)行后發(fā)現(xiàn),依然是以附件形式發(fā)送的,希望有高手能夠指點(diǎn)一下,如何可以發(fā)送在正文中顯示的圖片的郵件,就是圖片是附件中存在,但同時(shí)能顯示在正文中,具體形式如下圖。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持PHP中文網(wǎng)。

更多詳解python發(fā)送各類(lèi)郵件的主要方法相關(guān)文章請(qǐng)關(guān)注PHP中文網(wǎng)!


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

Outils d'IA chauds

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

échangez les visages dans n'importe quelle vidéo sans effort grace à notre outil d'échange de visage AI entièrement gratuit?!

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

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

Sujets chauds

Tutoriel PHP
1502
276
Comment gérer l'authentification de l'API dans Python Comment gérer l'authentification de l'API dans Python Jul 13, 2025 am 02:22 AM

La clé pour gérer l'authentification de l'API est de comprendre et d'utiliser correctement la méthode d'authentification. 1. Apikey est la méthode d'authentification la plus simple, généralement placée dans l'en-tête de demande ou les paramètres d'URL; 2. BasicAuth utilise le nom d'utilisateur et le mot de passe pour la transmission de codage Base64, qui convient aux systèmes internes; 3. OAuth2 doit d'abord obtenir le jeton via client_id et client_secret, puis apporter le Bearertoken dans l'en-tête de demande; 4. Afin de gérer l'expiration des jetons, la classe de gestion des jetons peut être encapsulée et rafra?chie automatiquement le jeton; En bref, la sélection de la méthode appropriée en fonction du document et le stockage en toute sécurité des informations clés sont la clé.

Expliquez les assertions Python. Expliquez les assertions Python. Jul 07, 2025 am 12:14 AM

Assert est un outil d'affirmation utilisé dans Python pour le débogage et lance une affirmation d'établissement lorsque la condition n'est pas remplie. Sa syntaxe est affirmer la condition plus les informations d'erreur facultatives, qui conviennent à la vérification de la logique interne telle que la vérification des paramètres, la confirmation d'état, etc., mais ne peuvent pas être utilisées pour la sécurité ou la vérification des entrées des utilisateurs, et doit être utilisée en conjonction avec des informations d'invite claires. Il n'est disponible que pour le débogage auxiliaire au stade de développement plut?t que pour remplacer la manipulation des exceptions.

Que sont les indices de type Python? Que sont les indices de type Python? Jul 07, 2025 am 02:55 AM

TypeHintsInpythonsolvetheproblebandofambigu?té et opposant à un montant de type de type parallèlement au développement de l'aménagement en fonction des types de type.

Comment itérer sur deux listes à la fois Python Comment itérer sur deux listes à la fois Python Jul 09, 2025 am 01:13 AM

Une méthode courante pour parcourir deux listes simultanément dans Python consiste à utiliser la fonction zip (), qui appariera plusieurs listes dans l'ordre et sera la plus courte; Si la longueur de liste est incohérente, vous pouvez utiliser itertools.zip_langest () pour être le plus long et remplir les valeurs manquantes; Combiné avec enumerate (), vous pouvez obtenir l'index en même temps. 1.zip () est concis et pratique, adapté à l'itération des données appariées; 2.zip_langest () peut remplir la valeur par défaut lorsqu'il s'agit de longueurs incohérentes; 3. L'énumération (zip ()) peut obtenir des indices pendant la traversée, en répondant aux besoins d'une variété de scénarios complexes.

Que sont les itérateurs Python? Que sont les itérateurs Python? Jul 08, 2025 am 02:56 AM

Inpython, itérateurslawjectsThatallowloopingthroughCollectionsbyImpleting __iter __ () et__Next __ (). 1) iteratorsworkVeatheitorat

Tutoriel Python Fastapi Tutoriel Python Fastapi Jul 12, 2025 am 02:42 AM

Pour créer des API modernes et efficaces à l'aide de Python, FastAPI est recommandé; Il est basé sur des invites de type Python standard et peut générer automatiquement des documents, avec d'excellentes performances. Après avoir installé FastAPI et ASGI Server Uvicorn, vous pouvez écrire du code d'interface. En définissant les itinéraires, en écrivant des fonctions de traitement et en renvoyant des données, les API peuvent être rapidement construites. Fastapi prend en charge une variété de méthodes HTTP et fournit des systèmes de documentation SwaggerUI et Redoc générés automatiquement. Les paramètres d'URL peuvent être capturés via la définition du chemin, tandis que les paramètres de requête peuvent être implémentés en définissant des valeurs par défaut pour les paramètres de fonction. L'utilisation rationnelle des modèles pydantiques peut aider à améliorer l'efficacité du développement et la précision.

Comment tester une API avec Python Comment tester une API avec Python Jul 12, 2025 am 02:47 AM

Pour tester l'API, vous devez utiliser la bibliothèque des demandes de Python. Les étapes consistent à installer la bibliothèque, à envoyer des demandes, à vérifier les réponses, à définir des délais d'attente et à réessayer. Tout d'abord, installez la bibliothèque via PiPinstallRequests; Utilisez ensuite les demandes.get () ou les demandes.Post () et d'autres méthodes pour envoyer des demandes GET ou POST; Vérifiez ensuite la réponse.status_code et la réponse.json () pour vous assurer que le résultat de retour est en conformité avec les attentes; Enfin, ajoutez des paramètres de délai d'expiration pour définir l'heure du délai d'expiration et combinez la bibliothèque de réessayer pour obtenir une nouvelle tentative automatique pour améliorer la stabilité.

Portée variable python dans les fonctions Portée variable python dans les fonctions Jul 12, 2025 am 02:49 AM

Dans Python, les variables définies à l'intérieur d'une fonction sont des variables locales et ne sont valides que dans la fonction; Les variables globales sont définies à l'extérieur qui peuvent être lues n'importe où. 1. Les variables locales sont détruites lors de l'exécution de la fonction; 2. La fonction peut accéder aux variables globales mais ne peut pas être modifiée directement, donc le mot-clé global est requis; 3. Si vous souhaitez modifier les variables de fonction externes dans les fonctions imbriquées, vous devez utiliser le mot-clé non local; 4. Les variables avec le même nom ne se affectent pas dans différentes lunettes; 5. Global doit être déclaré lors de la modification des variables globales, sinon une erreur non liée à la dorsale sera augmentée. Comprendre ces règles permet d'éviter les bogues et d'écrire des fonctions plus fiables.

See all articles