邮件与短信

邮件发送

  • 简介:

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

  • 库:smtplib

  • 示例:

    import os
    import smtplib
    # 用于邮件发送的类
    from email.mime.text import MIMEText # 邮箱服务器
    mail_server = 'smtp.163.com' # 用户名
    mail_user = 'xxx@163.com' # 密码或授权码
    # 为了密码不对外公开,可以通过环境变量进行获取
    mail_pwd = os.getenv('MAIL_PASSWORD', '') # 消息内容
    content = '请点击右边链接完成激活,激活' # 创建消息对象,并设置内容,
    # 第二个用于指定文本内容类型,若不指定默认是文本
    message = MIMEText(content, 'html') # 设置主题
    message['Subject'] = '账户激活' # 设置发送者
    message['From'] = mail_user # 创建邮件发送类
    mail = smtplib.SMTP(mail_server, 25) # 身份认证
    mail.login(mail_user, mail_pwd) # 指定接收者,多个接收者使用列表
    to = 'xxx@qq.com' # 发送邮件
    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': ''}
    # 将字典对象转换为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': ''}
    
    # 将字典数据进行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 = '' # 模板参数,多个使用逗号隔开
    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-邮件与短信的更多相关文章

  1. python学习总结------邮件与短信

    邮件发送 - 简介: - 邮件服务器.用户名.密码 - 相关协议: - SMTP:简单邮件传输协议 - POP3:邮局通讯协议 - IMAP:交互式邮件存取协议 - SMTP协议默认端口是25 - 用 ...

  2. 基于日志服务的GrowthHacking(1):数据埋点和采集(APP、Web、邮件、短信、二维码埋点技术)

    数据质量决定运营分析的质量 在上文中,我们介绍了GrowthHacking的整体架构,其中数据采集是整个数据分析的基础,只有有了数据,才能进行有价值的分析:只有高质量的数据,才能驱动高质量的运营分析. ...

  3. 十四. Python基础(14)--递归

    十四. Python基础(14)--递归 1 ● 递归(recursion) 概念: recursive functions-functions that call themselves either ...

  4. zabbix告警邮件、短信发送错误快速排查方法

    zabbix告警邮件.短信发送错误快速排查方法 背景 zabbix告警邮件.短信经常有同事反馈发送错误的情况,这个问题排查的角度很多,那么最快捷的角度是什么呢? 在我看来,最快的角度就是判断这个告警邮 ...

  5. python调用腾讯云短信接口

    目录 python调用腾讯云短信接口 账号注册 python中封装腾讯云短信接口 python调用腾讯云短信接口 账号注册 去腾讯云官网注册一个腾讯云账号,通过实名认证 然后开通短信服务,创建短信应用 ...

  6. Flask实战第67天:Flask+Celery实现邮件和短信异步发送

    之前在项目中我们发送邮件和 短信都是阻塞的,现在我们来利用Celery来优化它们 官方使用文档: http://flask.pocoo.org/docs/1.0/patterns/celery/ re ...

  7. iOS:实现邮件和短信发送的简单示例

    发送邮件1.导入库文件:MessageUI.framework2.引入头文件3.实现代理<MFMailComposeViewControllerDelegate> 和 <UINavi ...

  8. 一百四十七:CMS系统之celery实现邮件和短信异步发送

    celery工作原理 celery官方文档:https://docs.celeryproject.org/en/latest/ 安装:pip install celery windows下还需安装ev ...

  9. Python使用腾讯云-短信服务发送手机短信

    目前[腾讯云短信]为客户提供[国内短信].[国内语音]和[海外短信]三大服务,腾讯云短信SDK支持以下操作: 国内短信 国内短信支持操作: • 指定模板单发短信 • 指定模板群发短信 • 拉取短信回执 ...

随机推荐

  1. 【实用类String】String类方法的应用案例:查找判断指定字符出现的次数和位置

    一.应用要求 输入一个字符串,再输入要查找的字符,判断该字符在该字符串中出现的次数. 二.实现思路 1.使用substring()方法将字符串的每个字符存入数组 2.比较数组每个字符是否与指定的字符相 ...

  2. 初识Socket通信:基于TCP和UDP协议学习网络编程

    学习笔记: 1.基于TCP协议的Socket网络编程: (1)Socket类构造方法:在客户端和服务器端建立连接 Socket s = new Socket(hostName,port);以主机名和端 ...

  3. python 中函数

    函数   def 函数名(形参):形参不用在前面定义,局部变量   参数      必须参数            必须以正确的顺序传参      关键字参数        加入关键字后可以不需要正确 ...

  4. Node中使用mysql模块遇到的问题

    Node的mysql模块,本人的感受就是不好用,各种报错,各种坑,有一个问题困扰了我很久,也不知道是不是我使用的方式不对,不过后来用easymysql模块解决了,我才深信这是一个坑. 问题描述: 假设 ...

  5. python占位符%s,%d,%r,%f

    input接收的所有输入默认都是字符串格式 1.%s代表字符串占位符 conn, client_addr = phone.accept() print(conn) print(client_addr) ...

  6. 从零开始的全栈工程师——jQuery

    jQueryjq是js一个高效且精简的库( 用的多写得少 ) ,是chrome出版的.jq内部有一个$的方法,他是jq的起始符或标识符,这个方法是用于获取元素. 下载库或者框架的方法官网 produc ...

  7. jq实现发送验证码倒计时60s

    setInterval() :按照指定的周期(以毫秒计)来调用函数或计算表达式.方法会不停地调用函数,直到 clearInterval() 被调用或窗口被关闭. setTimeout() :在指定的毫 ...

  8. Latex 中cite的使用

    (一).设置上标显示的命令 可以在引言区增加类似如下的重定义命令:   \newcommand{\upcitep}[1]{\textsuperscript{\textsuperscript{\cite ...

  9. 【MATLAB】R2017b两个镜像文件如何安装

    1.采用DEAMON TOOLS加载镜像1. 2.当安装过程中弹出[请插入DVD2]时,在原来的盘符上面右键点击[装载],选择DVD2的镜像文件.在安装程序处选择[继续]即可正常安装.

  10. Java IntelliJ IDEA 不能显示项目里的文件结构的解决方案

    按下列步骤操作:1. 关闭IDEA2.然后删除项目文件夹下的.idea文件夹3.重新用IDEA工具打开项目