Python基础—14-邮件与短信

Posted Sunwj_Monkey

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python基础—14-邮件与短信相关的知识,希望对你有一定的参考价值。

邮件与短信

邮件发送

  • 简介:

    • 邮件服务器、账户、密码
    • 相关协议:SMTP、POP3、IMAP
    • 默认TCP协议端口:25
  • 用途:经常用在一个网站的注册激活、通知、找回密码等场景

  • 库:smtplib

  • 示例:

    import os
    import smtplib
    # 用于邮件发送的类
    from email.mime.text import MIMEText
    
    # 邮箱服务器
    mail_server = smtp.163.com
    
    # 用户名
    mail_user = [email protected]
    
    # 密码或授权码
    # 为了密码不对外公开,可以通过环境变量进行获取
    mail_pwd = os.getenv(MAIL_PASSWORD, 123456)
    
    # 消息内容
    content = 请点击右边链接完成激活,激活
    
    # 创建消息对象,并设置内容,
    # 第二个用于指定文本内容类型,若不指定默认是文本
    message = MIMEText(content, html)
    
    # 设置主题
    message[Subject] = 账户激活
    
    # 设置发送者
    message[From] = mail_user
    
    # 创建邮件发送类
    mail = smtplib.SMTP(mail_server, 25)
    
    # 身份认证
    mail.login(mail_user, mail_pwd)
    
    # 指定接收者,多个接收者使用列表
    to = [email protected]
    
    # 发送邮件
    mail.sendmail(mail_user, to, message.as_string())
    
    # 结束
    mail.quit()

     

  • 总结:

    • 邮箱服务器配置
    • 创建用于发送的消息对象MIMEText
    • 创建用于发送邮件的对象smtplib.SMTP
    • 使用邮件发送对象发送消息对象

预备知识

  • http.client

    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

    • 说明:是使用非常广泛的两种数据传输格式,之前xml居多,现在json居多。
    • json使用
    import json
    
    d = {name: xiaoming, age: 20}
    # 将字典对象转换为JSON格式的字符串
    s = json.dumps(d)
    print(s)
    print(type(s))
    
    # 将JSON格式的字符串转换为字典对象
    d2 = json.loads(s)
    print(d2)
    print(type(d2))

     

  • urllib.parse

    from urllib.parse import urlencode, urlparse, parse_qs
    
    d = {name: xiaoming, age: 20}
    
    # 将字典数据进行url编码:name=xiaoming&age=20
    print(urlencode(d))
    
    url = http://www.baidu.com/abc/def?page=2&id=5&like=sport&like=music
    
    # 解析url
    p = urlparse(url)
    print(p.query)
    
    # 将url请求字符串转换为字典
    d2 = parse_qs(p.query)
    print(d2)

     

短信发送

  • 说明:注册验证码、通知消息、营销短信、...

  • 平台:阿里、秒嘀、云之讯、...

  • 认识:云之讯(www.ucpaas.com)

  • 代码示例:

    # 账户sid
    account_sid = b5c6fd1d02071a766009475f0478e0ac
    
    # auth token
    auth_token = 2426bff7df8ff95f59fcbcdce3362c58
    
    # 应用标识
    app_id = fac78e7f7f0647c7a47c4809ff564f5c
    
    # 短信模板标识
    template_id = 291768
    
    # 模板参数,多个使用逗号隔开
    param = name
    
    # 电话
    mobile = xxx
    
    # 数据字典
    form_data = {
        "sid": account_sid,
        "token": auth_token,
        "appid": app_id,
        "templateid": template_id,
        "param": param,
        "mobile": mobile
    }
    
    # 将字典转换JSON字符串
    import json
    form_data = json.dumps(form_data)
    
    # 创建‘浏览器‘对象
    import http.client
    connect = http.client.HTTPConnection(open.ucpaas.com)
    
    # 准备请求头
    headers = {
        Accept: application/json,
        Content-Type: application/json;charset=utf-8
    }
    # 请求地址
    url = https://open.ucpaas.com/ol/sms/sendsms
    
    # 发送请求
    connect.request(method=POST, url=url, body=form_data, headers=headers)
    
    # 获取响应
    resp = connect.getresponse()
    
    # 打印响应
    print(resp.read().decode(utf-8))

     

  • 友情提示:出现错误,去查看返回状态码,并进行解决。

  • 秒嘀平台简介

以上是关于Python基础—14-邮件与短信的主要内容,如果未能解决你的问题,请参考以下文章

无法检查 klaviyo laravel 包中短信的同意状态

zabbix的短信与邮件报警脚本

Python 自动化指南(繁琐工作自动化)第二版:十八发送电子邮件和短信

无法在 Xamarin iOS 应用程序中将文本共享到电子邮件或短信中

我应该如何使用 Outlook 发送代码片段?

python 实现监测consul服务状态,发送邮件短信