Définition de la classe Smptp : smtplib.SMTP(host[,port[,local_hostname[,,timeout]]]), en tant que constructeur de SMTP, sa fonction est d'établir une connexion avec le serveur smtp une fois la connexion réussie. , vous pouvez envoyer une demande au serveur. Envoyer des demandes associées, telles que connexion, vérification, envoi, sortie, etc. Le paramètre host est l'adresse de l'hôte SMTP distant, telle que stmp.163.com ; le port est le port de connexion, la valeur par défaut est 25 ; la fonction de local_hostname est d'envoyer la commande HELO/EHLO au FQDN local (nom de domaine complet) ; , et timeout est la connexion ou la tentative majoritaire Deuxième timeout, la classe SMTP a les méthodes suivantes :
Méthode SMTP.connect([host[,port]]), méthode pour se connecter à l'hôte SMTP distant , host est l'adresse de l'hôte distant, port est le port SMTP de l'hôte distant, la valeur par défaut est 25 , vous pouvez également utiliser directement le format host:port, par exemple : SMTP.connect("smtp.163.com","25' ).
Méthode SMTP.login(user,password), méthode de vérification de l'hôte SMTP distant, les paramètres sont le nom d'utilisateur et le mot de passe, tels que SMTP.login("18801457794@139.com",'123456').
Méthode SMTP.sendmail(from_addr,to_addrs,msg[,mail_options,rcpt_options]), qui implémente la fonction d'envoi d'e-mail, les paramètres sont l'expéditeur, le destinataire et le contenu de l'e-mail, par exemple : SMTP.sendmail("python@163.com" ,'404408853@qq.com',body), où le contenu du corps est défini comme suit :
"""De :python@163.com
À :404408853@qq.com
Sujet :test mail
test mail body"""
SMTP.starttls([keyfile[,certfile] ]), activez le mode TLS (transmission sécurisée), toutes les instructions SMTP sont une transmission cryptée, par exemple, lors de l'utilisation du serveur stmp de gmail , vous devez l'activer pour envoyer des e-mails normalement
Méthode SMTP.quit(), port de connexion au serveur SMTP
Ce qui suit est un exemple de la façon dont Python envoie des e-mails
[root@localhost smtplib]# cat simple1.py #!/usr/bin/env python # -*- coding: utf-8 -*- import smtplib import string HOST = "smtp.139.com" #定义smtp主机 SUBJECT = "test" #定义邮件主题 TO = "404408853@qq.com" #定义邮件收件人 FROM = "18801457794@139.com" #定义邮件发件人 text = "python test mail" #邮件的内容 BODY=string.join(( #组装sendmail方法的邮件主体内容,各段以"\r\n"进行分隔 "From:%s" %FROM, "To:%s" %TO, "Subject:%s"%SUBJECT, "", text ),"\r\n") server = smtplib.SMTP() #创建一个SMTP对象 server.connect(HOST,"25") #通过connect方法连接smtp主机 server.starttls() #启动安全传输模式 server.login("18801457794@139.com","123456") #邮件账户登录校验 server.sendmail(FROM,TO,BODY) #邮件发送 server.quit() #断开smtp连接
Exécutez ce code et nous recevrons un e-mail
Mise en œuvre des e-mails de rapport de données au format HTML
Le contenu des e-mails en texte brut ne peut plus répondre à nos divers besoins. Cet exemple présente la classe MIMETex de mime qui est utilisée pour prendre en charge les e-mails au format HTML, prenant en charge tous les éléments HTML, y compris les tableaux, les images, les animations, les styles CSS, les formulaires, etc. L'exemple utilise des tableaux HTML pour personnaliser un rapport de trafic professionnel parfait. Le code de mise en œuvre est le suivant :
#!/usr/bin/env python #coding:utf-8 import smtplib from email.mime.text import MIMEText #导入MIMEText类 HOST = "smtp.139.com" SUBJECT = u"官网流量数据报表" TO = "404408853@qq.com" FROM = "18801457794@139.com" msg = MIMEText(""" <table width="800" border="0" cellspacing="0" cellpadding="4"> <tr> <td bgcolor="#CECFAD" height="20" style="font-size:14px">*官网数据<a href="monitor.domain.com">更多</a></td> </tr> <td bgcolor="#EFEBDE" height="100" style="font-size:13px"> 1)日访问量:<font color=read>152433</font>访问次数:23651 页面浏览量:45123 点击数:545122 数据流量:504Mb<br> 2)状态码消息<br> 500:105 404;3264 503;214<br> 3)访客浏览器信息<br> IE:50% firefox:10% chrome:30% other:10%<br> 4)页面信息<br> /index.php 42153<br> /view.php 21451<br> </td> </tr> </table>""","html","utf-8") msg['Subject'] = SUBJECT msg['FROM'] = FROM msg['To'] = TO try: server = smtplib.SMTP() server.connect(HOST,'25') server.starttls() server.login('18801457794@139.com','123456') server.sendmail(FROM,TO,msg.as_string()) server.quit() print "邮件发送成功" except Exception,e: print "失败:" + str(e)
Le résultat de l'exécution du code est celui indiqué dans. la figure,
Exemple 2 : Implémentation d'un rapport sur les performances du serveur au format graphique et texte E-mail
Lorsque vous demandez du contenu d'e-mail contenant des données d'image, vous devez faire référence à la classe MIMEImage. Si le corps de l'e-mail est constitué de plusieurs objets MIME, vous devez référencer la classe MIMEMultipart pour l'encapsulation. Cet exemple utilise la combinaison des classes MIMEText et MIMEImage pour personnaliser les e-mails de rapport sur les performances du serveur au format graphique et texte. Le code d'implémentation est le suivant
#!/usr/bin/env python #coding: utf-8 import smtplib,string from email.mime.multipart import MIMEMultipart from email.mime.text import MIMEText from email.mime.image import MIMEImage HOST ="smtp.139.com" #定义smtp主机 SUBJECT = "金美美平台系统状态报表" #定义邮件主题 TO = "404408853@qq.com,302803690@qq.com" #定义邮件收件人 FROM = "18801457794@139.com" #定义邮件发件人 TO_list = TO.split(TO) def addimg(src,imgid): #添加图片函数,参数1:图片路径,参数2:图片ID fp = open(src,'rb') #打开文件 msgImage = MIMEImage(fp.read()) #创建MIMEImage对象,读取图片内容并作为参数 fp.close() #关闭文件 msgImage.add_header('Content-ID',imgid) #指定图片文件的Content-ID,<img alt="Comment utiliser le module de messagerie smtplib en Python" >标签src用到 return msgImage #返回msgImage对象 msg = MIMEMultipart('related') #创建MIMEMultipart对象,采用related定义内嵌资源的邮件体 msgtext = MIMEText(""" <table width="600" border="0" cellspacing="0" cellspacing="4"> <tr bgcolor="#CECFAD" height="20" style="font-size:14px"> <td colspan=2>以下是211.157.111.41系统状态图</td> </tr> <tr bgcolor="#EFEBDE" height="100" style="font-size:13px"> <td> <img src="cid:io" alt="Comment utiliser le module de messagerie smtplib en Python" ></td><td> <img src="cid:load" alt="Comment utiliser le module de messagerie smtplib en Python" ></td> </tr> <tr bgcolor="#EFEBDE" height="100" style="font-size:13px"> <td> <img src="cid:mem" alt="Comment utiliser le module de messagerie smtplib en Python" ></td><td> <img src="cid:disk" alt="Comment utiliser le module de messagerie smtplib en Python" ></td> </tr> </table>""","html","utf-8") #<img alt="Comment utiliser le module de messagerie smtplib en Python" >标签的src属性是通过Content-ID来引用的 msg.attach(msgtext) #MIMEMultipart对象附加MIMEText的内容 msg.attach(addimg("img/bytes_io.png","io")) #使用MIMEMultipart对象附加MIMEImage的内容 msg.attach(addimg("img/os_load.png","load")) msg.attach(addimg("img/os_mem.png","mem")) msg.attach(addimg("img/os_disk.png","disk")) msg['Subject'] = SUBJECT msg['FROM']=FROM msg['To'] = TO try: server = smtplib.SMTP() server.connect(HOST,"25") server.starttls() server.login('18801457794@139.com','123456') server.sendmail(FROM,TO_list,msg.as_string()) server.quit() print "邮件发送成功!" except Exception,e: print "失败:"+ str(e)
Le. L'effet d'exécution du code est le suivant Figure
Pour plus d'articles connexes sur la façon d'utiliser le module de messagerie smtplib en python, veuillez faire attention au site Web PHP chinois !