国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

Python實現自動發送郵件功能

2020-02-16 11:05:57
字體:
來源:轉載
供稿:網友

簡單郵件傳輸協議(SMTP)是一種協議,用于在郵件服務器之間發送電子郵件和路由電子郵件。Python提供smtplib模塊,該模塊定義了一個SMTP客戶端會話對象,可用于使用SMTP或ESMTP偵聽器守護程序向任何互聯網機器發送郵件。

SMTP通訊的基本流程可以概括為以下幾點:

1.連接SMTP服務器

2.登陸用戶名和密碼

3.發送指定郵件內容

4.退出SMTP連接

一、發送純文本格式郵件

#coding:utf-8import sysreload(sys)sys.setdefaultencoding('utf8')import smtplibfrom smtplib import SMTPfrom email.mime.text import MIMETextfrom email.header import Header#構造純文本郵件內容msg = MIMEText('hello,send by Python.....','plain','utf-8')#發送者郵箱sender = 'xxxxx@XXXXX.com.cn'#發送者的登陸用戶名和密碼user = 'xxxxx@XXXX.com.cn'password = 'xxxxxx'#發送者郵箱的SMTP服務器地址smtpserver = 'xxxx'#接收者的郵箱地址receiver = ['xxxxxx@qq.com','xxxxxx@outlook.com'] #receiver 可以是一個listsmtp = smtplib.SMTP() #實例化SMTP對象smtp.connect(smtpserver,25) #(缺省)默認端口是25 也可以根據服務器進行設定smtp.login(user,password) #登陸smtp服務器smtp.sendmail(sender,receiver,msg.as_string()) #發送郵件 ,這里有三個參數'''login()方法用來登錄SMTP服務器,sendmail()方法就是發郵件,由于可以一次發給多個人,所以傳入一個list,郵件正文是一個str,as_string()把MIMEText對象變成str。'''smtp.quit()

運行之后就會收到郵件:

但是仔細觀察會發現:

1.郵件沒有主題

2.看不到收件人的信息

這是因為郵件主題、如何顯示發件人、收件人等信息并不是通過SMTP協議發給MTA,而是包含在發給MTA的文本中的,所以,我們必須把From、To和Subject添加到MIMEText中,才是一封完整的郵件:

msg = MIMEText('hello,send by Python.....','plain','utf-8')msg['From'] = Header('Python測試','utf-8')msg['To'] = Header('管理員','utf-8')subject = 'python SMTP 測試郵件'msg['Subject'] = Header(subject,'utf-8') 

二、發送HTML格式的郵件

如果我們要發送HTML郵件,而不是普通的純文本文件怎么辦?方法很簡單,在構造MIMEText對象時,把HTML字符串傳進去,再把第二個參數由plain變為html就可以了:

msg = MIMEText('<html><h1>你好!<h1><html>','html','utf-8') #發送HTML格式郵件就只需要把對應的第二個參數改為html即可 

三、發送帶附件的郵件

發送帶附件的郵件,首先要創建MIMEMultipart()實例,然后構造附件,如果有多個附件,可依次構造,最后利用smtplib.smtp發送。

#coding:utf-8import sysreload(sys)sys.setdefaultencoding('utf8')import smtplibfrom email.mime.text import MIMETextfrom email.mime.multipart import MIMEMultipartfrom email.header import Header#發送郵件服務器smtpserver = 'xxxxx'#發送郵箱用戶名和密碼user = 'xxxxxx'password = 'xxxxxx'#發送郵箱sender = 'xxxxx'#接受郵箱receiver = 'xxxxxxx'#創建一個帶附件的實例message = MIMEMultipart()message['From'] = Header('Python 測試','utf-8')message['To'] = Header('測試','utf-8')subject = 'Python SMTP郵件測試'message['Subject'] = Header(subject,'utf-8')#郵件正文內容message.attach(MIMEText('這是測試Python發送附件功能....','plain','utf-8'))#構造附件1,傳送當前目錄下的test.txt文件att1 = MIMEText(open('123.txt','rb').read(),'base64','utf-8')att1['Content-Type'] = 'application/octet-stream'#這里的filename可以任意寫,寫什么名字 郵件中就顯示什么名字att1['Content-Disposition'] = 'attachment;filename:"123.txt"'message.attach(att1)smtp = smtplib.SMTP()smtp.connect(smtpserver,25)smtp.login(user,password)smtp.sendmail(sender,receiver,message.as_string())smtp.quit()            
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 新兴县| 佛教| 格尔木市| 大方县| 舟曲县| 板桥市| 高陵县| 伊吾县| 喀喇沁旗| 贺兰县| 兰溪市| 云林县| 宜良县| 中江县| 双城市| 乡宁县| 黄平县| 宁安市| 吴堡县| 镇宁| 将乐县| 特克斯县| 新建县| 深州市| 钟祥市| 白水县| 中宁县| 渝北区| 中山市| 苍溪县| 新余市| 永登县| 彭水| 郓城县| 友谊县| 南澳县| 桑日县| 葵青区| 鄂托克旗| 海兴县| 平陆县|