1. 程式人生 > >14-python基礎知識-郵件與簡訊

14-python基礎知識-郵件與簡訊

郵件與簡訊

郵件傳送

  • 簡介:

    • 郵件伺服器:使用者名稱、密碼
    • 相關協議:
      • SMTP:簡單郵件傳輸協議,預設埠是25
      • POP3:郵局通訊協議
      • IMAP:互動式郵件存取協議
  • 用途:網站註冊啟用、通知、找回密碼、營銷等

  • 庫:smtplib

  • 示例:

    import os
    import smtplib
    from email.mime.text import MIMEText
    
    # 郵件伺服器
    mail_server = ''
    # 使用者名稱
    mail_username = ' ' # 密碼,通過環境變數獲取,可以避免隱私資訊的暴露 # 或授權碼,QQ郵箱需要使用授權碼 mail_password = os.getenv('MAIL_PASSWORD', '123456') # 郵件內容 content = '請點選右邊連結已完成啟用' # 建立用於傳送的郵件訊息物件 # 引數1:郵件內容 # 引數2:內容型別,plain表示普通文字,html表示網頁 message = MIMEText(content) # 設定主題 message['Subject'] = '賬戶啟用' # 設定傳送者 message['From'] =
    mail_username # 建立用於傳送郵件的物件 # SMTP:郵件不加密,埠25 # SMTP_SSL:郵件加密傳輸,埠465,QQ郵箱必須使用加密 mail = smtplib.SMTP(mail_server) # 身份認證 mail.login(mail_username, mail_password) # 傳送給誰 to = ' # 傳送郵件 mail.sendmail(mail_username, to, message.as_string()) # 結束 mail.quit()
  • 說明:

    • 郵箱伺服器配置
    • 建立郵件訊息物件MIMEText
    • 建立用於傳送郵件的物件smtplib.SMTP
    • 使用郵件傳送物件傳送郵件
  • QQ郵件傳送特別提醒:

    • 密碼不是QQ登入密碼,而是授權碼,需要開啟SMTP服務並設定
    • 必須使用加密傳輸,也就是建立SMTP_SSL物件傳送郵件

預備知識

  • http.client:可以傳送http請求

    import http.client
    
    # 建立物件(相當於一個瀏覽器)
    connect = http.client.HTTPConnection('www.baidu.com')
    
    # 傳送請求
    connect.request(method='GET', url='http://www.baidu.com')
    
    # 獲取響應
    resp = connect.getresponse()
    
    # 列印響應的內容
    print(resp.read().decode('utf-8'))  
    
  • json和XML

    • 說明:使用非常廣泛的資料傳輸格式,現在JSON使用居多
    • JSON使用:
    import json
    
    d = {'name': 'xiaoming', 'age': 18}
    
    # 將字典轉換為JSON字串
    s = json.dumps(d)
    
    print(s, type(s))
    
    # 將JSON字串轉換為字典
    d2 = json.loads(s)
    print(d2, type(d2))
    
  • urllib.parse

    from urllib.parse import urlencode, urlparse, parse_qs
    
    d = {'name': 'xiaoming', 'age': 18}
    # name=xiaoming&age=18
    # 將字典資料進行URL編碼
    print(urlencode(d))
    
    url = 'https://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=0&rsv_idx=1&tn=baidu&wd=python&rsv_pq=df80f3db0000abd0&rsv_t=a542qF5GDdQDk6bhs2c3yr7BGToMf0ge1e2b%2BnpWm0lY4ZV8ICYY1yM48FI&rqlang=cn&rsv_enter=1&rsv_sug3=6&rsv_sug1=6&rsv_sug7=101'
    
    # 解析URL
    p = urlparse(url)
    
    # 提取請求字串
    print(p.query)
    
    query_str = 'like=sport&like=music&like=games&name=ergou'
    
    # 解析請求字串:將請求字串轉換為字典
    # d2 = parse_qs(p.query)
    d2 = parse_qs(query_str)
    
    print(d2)
    

簡訊傳送

  • 說明:註冊登入驗證碼、通知訊息、營銷簡訊等。

  • 平臺:阿里、秒嘀、雲之訊、…

  • 認識:雲之訊(www.ucpaas.com)

  • 示例:

    # 賬戶sid
    sid = 'b5c6fd1d02071a766009475f0478e0ac'
    
    # 認證令牌
    token = '2426bff7df8ff95f59fcbcdce3362c58'
    
    # 應用ID
    appid = 'fac78e7f7f0647c7a47c4809ff564f5c'
    
    # 模板ID
    templateid = '29735'
    
    # 引數
    param = ‘’
    
    # 接收手機號
    mobile = ''
    
    # 引數字典
    data = {
        "sid": sid,
        "token": token,
        "appid": appid,
        "templateid": templateid,
        "param": param,
        "mobile": mobile,
    }
    
    # 將字典轉換為JSON字串
    import json
    json_data = json.dumps(data)
    # print(json_data)
    
    # 建立'瀏覽器'物件
    import http.client
    connect = http.client.HTTPConnection('open.ucpaas.com')
    
    # 介面地址
    url = 'https://open.ucpaas.com/ol/sms/sendsms'
    
    # 請求頭
    header = {
        'Accept': 'application/json',
        'Content-Type': 'application/json;charset=utf-8',
    }
    
    # 傳送請求
    connect.request(method='POST', url=url, body=json_data, headers=header)
    
    # 獲取響應
    resp = connect.getresponse()
    
    # 列印響應內容
    print(resp.read().decode('utf-8'))