day28-20180605筆記

筆記: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]]] )

參數說明:

  • host: SMTP 服務器主機。 你能夠指定主機的ip地址或者域名如:runoob.com,這個是可選參數。
  • port: 若是你提供了 host 參數, 你須要指定 SMTP 服務使用的端口號,通常狀況下SMTP端口號爲25。
  • local_hostname: 若是SMTP在你的本機上,你只須要指定服務器地址爲 localhost 便可。

Python SMTP對象使用sendmail方法發送郵件,語法以下:

SMTP.sendmail(from_addr, to_addrs, msg[, mail_options, rcpt_options]

參數說明:

  • from_addr: 郵件發送者地址。
  • to_addrs: 字符串列表,郵件發送地址。
  • msg: 發送消息

這裏要注意一下第三個參數,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: 沒法發送郵件")

咱們使用三個引號來設置郵件信息,標準郵件須要三個頭部信息: FromTo, 和 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()

查收郵件

 

 

 總結:

一、仍是第三方封裝好的模塊好使,方便;

二、工做中使用郵件比較少,都是經過釘釘羣機器人發送告警,還能艾特人;

相關文章
相關標籤/搜索