筆記:Python3 發郵件html
1、複習socket
python
獲取www.baidu.com的IP地址瀏覽器
#!/usr/bin/env python # -*- coding: utf-8 -*- # @Time : 2018/6/3 20:22 # @Author : lingxiangxiang # @File : demon1.py import socket host = "www.baidu.com" port = 443 ip = socket.gethostbyname(host) print("百度IP地址: {0}".format(ip)) address = (ip, port) try: s = socket.socket() s.connect(address) request = "GET / HTTP/1.1\r\nHost:www.baidu.com\r\n\r\n" s.sendall(request.encode("utf-8")) res = s.recv(80960) if res: print(res) else: print("visit {0} error".format(host)) except Exception as e: raise e
以上實例輸出的結果服務器
百度IP地址: 14.215.177.39 b'\x15\x03\x01\x00\x02\x02\n'
搭建文件瀏覽服務:socket
#!/usr/bin/env python # -*- coding: utf-8 -*- # @Time : 2018/6/3 20:34 # @Author : lingxiangxiang # @File : demon2.py ''' python -m http.server 80 python3 python -m SimpleHTTPRequest ''' import http.server import socketserver port = 8000 host = '192.168.3.11' address = (host, port) # handle = SimpleHTTPRequest.SimpleHTTPRequestHandler handle = http.server.SimpleHTTPRequestHandler with socketserver.TCPServer(address, handle) as httpd: print("server start") httpd.serve_forever()
客戶端打開瀏覽器,訪問http://192.168.3.11:8000函數
2、郵件
測試
經過別人封裝好的第三方模塊發送郵件,模塊:yagmail優化
#!/usr/bin/env python # -*- coding: utf-8 -*- # @Time : 2018/6/5 21:02 # @Author : lingxiangxiang # @File : demon3.py
'''
使用別人封裝好的第三方模塊發送郵箱
User 用戶民
Password 用戶密碼,不少狀況須要使用受權碼
Host smtp的地址
Port 默認使用ssl協議,默認是465端口
To 收件人
Subject 主題
Contents 消息內容
Attachments 附件
Cc 抄送人
'''
import yagmail args={ "user": "12312312311@163.com", "password": "*******", "host": "smtp.163.com", "port": "465" } emailList=["657803478@qq.com", "2656467424@qq.com"] email = yagmail.SMTP(**args) email.send(to=emailList,subject="緣由分析",contents='''DT:SPM 是出錯信息的關鍵詞,能夠在這個網頁中找到出錯的緣由http://help.163.com/09/1224/17/5RAJ4LMH00753VB8.html,緣由:550 DT:SPM 郵件正文帶有不少垃圾郵件特徵或發送環境缺少規範性。需調整郵件內容或優化發送環境;緣由分析郵件中帶有敏感關鍵詞,例如促銷,發票等。郵件中包含超級連接,或者超級連接太多。垃圾郵件特徵比較明顯,例如:只有一張圖片,或只有一張圖片。發送相同的郵件內容太多了。處理這種狀況的方法是:換其餘郵箱發送,或調整郵件內容。''',cc="974644081@qq.com")
查收郵件ui
MTP(Simple Mail Transfer Protocol)即簡單郵件傳輸協議,它是一組用於由源地址到目的地址傳送郵件的規則,由它來控制信件的中轉方式。編碼
python的smtplib提供了一種很方便的途徑發送電子郵件。它對smtp協議進行了簡單的封裝。
Python建立 SMTP 對象語法以下:
import smtplib smtpObj = smtplib.SMTP( [host [, port [, local_hostname]]] )
參數說明:
Python SMTP對象使用sendmail方法發送郵件,語法以下:
SMTP.sendmail(from_addr, to_addrs, msg[, mail_options, rcpt_options]
參數說明:
這裏要注意一下第三個參數,msg是字符串,表示郵件。咱們知道郵件通常由標題,發信人,收件人,郵件內容,附件等構成,發送郵件的時候,要注意msg的格式。這個格式就是smtp協議中定義的格式。
如下是一個使用Python發送郵件簡單的實例:
#!/usr/bin/env python # -*- coding: utf-8 -*- import smtplib from email.mime.text import MIMEText from email.header import Header sender = 'from@runoob.com' receivers = ['429240967@qq.com'] # 接收郵件,可設置爲你的QQ郵箱或者其餘郵箱 # 三個參數:第一個爲文本內容,第二個 plain 設置文本格式,第三個 utf-8 設置編碼 message = MIMEText('Python 郵件發送測試...', 'plain', 'utf-8') message['From'] = Header("菜鳥教程", 'utf-8') # 發送者 message['To'] = Header("測試", 'utf-8') # 接收者 subject = 'Python SMTP 郵件測試' message['Subject'] = Header(subject, 'utf-8') try: smtpObj = smtplib.SMTP('localhost') smtpObj.sendmail(sender, receivers, message.as_string()) print ("郵件發送成功") except smtplib.SMTPException: print ("Error: 沒法發送郵件")
咱們使用三個引號來設置郵件信息,標準郵件須要三個頭部信息: From, To, 和 Subject ,每一個信息直接使用空行分割。
咱們經過實例化 smtplib 模塊的 SMTP 對象 smtpObj 來鏈接到 SMTP 訪問,並使用 sendmail 方法來發送信息。
執行以上程序,若是你本機安裝sendmail,就會輸出:
$ python3 test.py
郵件發送成功
使用smtplib模塊發送郵件:
#!/usr/bin/env python # -*- coding: utf-8 -*- # @Time : 2018/6/5 21:57 # @Author : yangyuanqiang # @File : demon2.py
'''
經過python發郵件步驟:
前提是:開通了第三方受權,能夠使用smtp服務
1. 建立一個smtp對象
2. 鏈接smp服務器,默認端口都是25
3. 登陸本身郵箱帳號,
4. 調用發送消息函數,參數:發件人,收件人,消息內容
5. 關閉鏈接
'''
import email.mime.multipart import email.mime.text import smtplib msg = email.mime.multipart.MIMEMultipart() msg['from'] = '15625087150@163.com' msg['to'] = '974644081@qq.com' msg['subject'] = 'ajing is very very cool' context = ''' <h1>老師好</h1> 你好, 這是一封自動發送的郵件。 www.ustchacker.com hello ''' text = email.mime.text.MIMEText(_text=context, _subtype="html") msg.attach(text) em = smtplib.SMTP_SSL() em.connect("smtp.163.com", 465) em.login("15625087150@163.com", '163.com') em.sendmail(from_addr='15625087150@163.com', to_addrs='974644081@qq.com', msg=msg.as_string()) em.quit()
查收郵件
總結:
一、仍是第三方封裝好的模塊好使,方便;
二、工做中使用郵件比較少,都是經過釘釘羣機器人發送告警,還能艾特人;