Smptp-Klassendefinition: smtplib.SMTP(host[,port[,local_hostname[,,timeout]]]), als Konstruktor von SMTP besteht seine Funktion darin, nach erfolgreicher Verbindung eine Verbindung mit dem SMTP-Server herzustellen , Sie können eine Anfrage an den Server senden. Senden Sie verwandte Anfragen, z. B. Anmelden, Verifizieren, Senden, Beenden usw. Der Host-Parameter ist die Remote-SMTP-Hostadresse, z. B. stmp.163.com; der Standardwert ist 25; die Funktion von local_hostname besteht darin, den HELO/EHLO-Befehl an den lokalen FQDN (vollständiger Domänenname) zu senden. , und Timeout ist die Zeitüberschreitung der Verbindung oder des Versuchs in den meisten Sekunden. Die SMTP-Klasse verfügt über die folgenden Methoden:
SMTP.connect([host[,port]])-Methode, Methode zum Herstellen einer Verbindung mit dem Remote-SMTP-Host , Host ist die Adresse des Remote-Hosts, Port ist der SMTP-Port des Remote-Hosts, der Standardwert ist 25. Sie können auch direkt das Host:Port-Format verwenden, zum Beispiel: SMTP.connect("smtp.163.com","25' ).
SMTP.login(user,password)-Methode, Überprüfungsmethode des Remote-SMTP-Hosts, die Parameter sind Benutzername und Passwort, wie z. B. SMTP.login("18801457794@139.com",'123456').
SMTP.sendmail(from_addr,to_addrs,msg[,mail_options,rcpt_options]) Methode zum Implementieren der E-Mail-Sendefunktion, die Parameter sind Absender, Empfänger und E-Mail-Inhalt, zum Beispiel: SMTP.sendmail("python@163.com", '404408853@qq.com',body), wobei der Textinhalt wie folgt definiert ist:
"""From:python@163.com
To:404408853@qq.com
Subject:test mail
Mail-Text testen""
SMTP.starttls([keyfile[,certfile] ])-Methode, TLS-Modus (sichere Übertragung) aktivieren, alle SMTP-Anweisungen werden verschlüsselt übertragen, zum Beispiel bei Verwendung des Stmp-Servers von Gmail, Sie müssen dies aktivieren, um E-Mails normal zu senden
SMTP.quit()-Methode, Port-SMTP-Serververbindung
Das Folgende ist ein Beispiel dafür, wie Python E-Mails sendet
[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连接
Führen Sie diesen Code aus und wir erhalten eine E-Mail
Implementieren von Datenberichts-E-Mails im HTML-Format
Nur-Text-E-Mail-Inhalte können unsere vielfältigen Anforderungen nicht mehr erfüllen. In diesem Beispiel wird die MIMETex-Klasse von E-Mail vorgestellt, die E-Mails im HTML-Format unterstützt, einschließlich Tabellen, Bildern, Animationen, CSS-Stilen, Formularen usw verwendet HTML-Tabellen, um einen perfekten Geschäftsverkehrsbericht anzupassen:
#!/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)
Das Ergebnis der Ausführung des Codes ist wie folgt Abbildung,
Beispiel 2: Implementierung eines Serverleistungsberichts im Grafik- und Textformat E-Mail
Wenn Sie E-Mail-Inhalte mit Bilddaten anfordern, müssen Sie auf die MIMEImage-Klasse If verweisen Da der E-Mail-Text aus mehreren MIME-Objekten besteht, müssen Sie zur Kapselung auf die Klasse MIMEMultipart verweisen. In diesem Beispiel wird die Kombination der Klassen MIMEText und MIMEImage verwendet, um E-Mails mit Serverleistungsberichten im Grafik- und Textformat anzupassen. Der Implementierungscode lautet wie folgt:
#!/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="So verwenden Sie das E-Mail-Modul smtplib in 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="So verwenden Sie das E-Mail-Modul smtplib in Python" ></td><td> <img src="cid:load" alt="So verwenden Sie das E-Mail-Modul smtplib in Python" ></td> </tr> <tr bgcolor="#EFEBDE" height="100" style="font-size:13px"> <td> <img src="cid:mem" alt="So verwenden Sie das E-Mail-Modul smtplib in Python" ></td><td> <img src="cid:disk" alt="So verwenden Sie das E-Mail-Modul smtplib in Python" ></td> </tr> </table>""","html","utf-8") #<img alt="So verwenden Sie das E-Mail-Modul smtplib in 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)
Der Der Code-Ausführungseffekt ist wie folgt Abbildung
Weitere verwandte Artikel zur Verwendung des E-Mail-Moduls smtplib in Python finden Sie auf der chinesischen PHP-Website!