48. Python 發郵件(1)
1.通過python發郵件步驟:
前提:開通了第三方授權,可以使用smtp服務
1.創建smtp對象
2.連接smtp服務器,默認端口號都是25
3.登陸自己的郵箱賬號
4.調用發送消息函數,參數:發件人、收件人、消息內容
5.關閉連接
2.郵件消息註冊:
首先創建一個消息對象:
msg = email.mime.multipart.MIMEMultipart() #通過這個類創建消息
msg['from'] = '[email protected]'
msg['to'] = '[email protected];[email protected];[email protected]'
msg['subject'] = 'aji111‘
分別指明郵件的發件人,收件, 只代表顯示的問題,如下圖:
3.消息內容:
首先,先定義一個字符串,來表示你得消息內容:
context= ‘’’hello world’’’ ## 正文
txt = email.mime.text.MIMEText(_text=content, _subtype="html") ## 定義文本以後,標明將context指定成什麽格式,html,txt
msg.attach(txt) ## 再註冊到消息中
_subtype 這個參數就決定了,你是以html解析的形式去發送,還是以text的形式去發送。
準備文件:
(1)測試配置文件:
文件1:message.conf (配置文件)
From = [email protected] To = [email protected],[email protected],[email protected],[email protected],[email protected] Subject = '測試郵件' message = '''大家好: 測試郵件 測試郵件 以上 謝謝 '''
(2)讀取文件conf文件工具,並測試
文件2:util.py (工具文件)
import codecs import re fileName = "message.conf" def getProperty(property): with codecs.open(fileName, encoding="utf-8") as f: if property != "message": for line in f.readlines(): if line.startswith("{0} = ".format(property)): value = line.split("{0} = ".format(property))[1] print value.strip('\n') return value.strip('\n') else: reg = re.compile(r"message = '''((.*\n)*)'''") result = reg.findall(f.read()) print result[0][0] return result[0][0] getProperty("From") getProperty("To") getProperty("Subject") getProperty("message")
文件2 調用 文件1 的參數,獲得到對應的值,測試結果如圖:
測試完成後,註銷輸出信息和調用函數
(3)發送郵件腳本
3.文件:sendtext.py (郵件腳本文件)
import email.mime.multipart import email.mime.text import email.header from util import getProperty import smtplib #消息內容 msg = email.mime.multipart.MIMEMultipart() sendFrom = getProperty("From") sendTo = getProperty("To") sendSubject = getProperty("Subject") sendMessage = getProperty("message") msg["From"] = sendFrom msg["To"] = sendTo msg['Subject'] = email.header.Header(sendSubject) text = email.mime.text.MIMEText(sendMessage, 'plain', 'utf-8') msg.attach(text) #發送 smtp = smtplib.SMTP_SSL("smtp.qq.com", 465) smtp.login('[email protected]', 'xrusbcaae') smtp.sendmail(sendFrom, sendTo.split(","), msg.as_string()) smtp.quit()
執行發送郵件:
48. Python 發郵件(1)