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 = '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-邮件与短信的更多相关文章
- python学习总结------邮件与短信
邮件发送 - 简介: - 邮件服务器.用户名.密码 - 相关协议: - SMTP:简单邮件传输协议 - POP3:邮局通讯协议 - IMAP:交互式邮件存取协议 - SMTP协议默认端口是25 - 用 ...
- 基于日志服务的GrowthHacking(1):数据埋点和采集(APP、Web、邮件、短信、二维码埋点技术)
数据质量决定运营分析的质量 在上文中,我们介绍了GrowthHacking的整体架构,其中数据采集是整个数据分析的基础,只有有了数据,才能进行有价值的分析:只有高质量的数据,才能驱动高质量的运营分析. ...
- 十四. Python基础(14)--递归
十四. Python基础(14)--递归 1 ● 递归(recursion) 概念: recursive functions-functions that call themselves either ...
- zabbix告警邮件、短信发送错误快速排查方法
zabbix告警邮件.短信发送错误快速排查方法 背景 zabbix告警邮件.短信经常有同事反馈发送错误的情况,这个问题排查的角度很多,那么最快捷的角度是什么呢? 在我看来,最快的角度就是判断这个告警邮 ...
- python调用腾讯云短信接口
目录 python调用腾讯云短信接口 账号注册 python中封装腾讯云短信接口 python调用腾讯云短信接口 账号注册 去腾讯云官网注册一个腾讯云账号,通过实名认证 然后开通短信服务,创建短信应用 ...
- Flask实战第67天:Flask+Celery实现邮件和短信异步发送
之前在项目中我们发送邮件和 短信都是阻塞的,现在我们来利用Celery来优化它们 官方使用文档: http://flask.pocoo.org/docs/1.0/patterns/celery/ re ...
- iOS:实现邮件和短信发送的简单示例
发送邮件1.导入库文件:MessageUI.framework2.引入头文件3.实现代理<MFMailComposeViewControllerDelegate> 和 <UINavi ...
- 一百四十七:CMS系统之celery实现邮件和短信异步发送
celery工作原理 celery官方文档:https://docs.celeryproject.org/en/latest/ 安装:pip install celery windows下还需安装ev ...
- Python使用腾讯云-短信服务发送手机短信
目前[腾讯云短信]为客户提供[国内短信].[国内语音]和[海外短信]三大服务,腾讯云短信SDK支持以下操作: 国内短信 国内短信支持操作: • 指定模板单发短信 • 指定模板群发短信 • 拉取短信回执 ...
随机推荐
- Cookie的应用实例
ASP.NET设置元素CSS属性 1.添加一条CSS规则: control.style.add("CSS名称",“CSS值”); 2.添加Class规则 Control.CSSCl ...
- JUnit测试框架的使用
1.学习Junit框架的使用 可通过以下两个示例进行学习. A.Junit使用方法示例1 1)把Junit引入当前项目库中 新建一个 Java 工程—coolJUnit,打开项目coolJUnit 的 ...
- 用AJAX实现页面登陆以及注册用户名验证
AJAX即“Asynchronous Javascript And XML”(异步JavaScript和XML),是指一种创建交互式网页应用的网页开发技术. AJAX 是一种用于创建快 ...
- String常用操作
常量池: 字符串一旦被初始化就不会被改变 String s="123"; s="abc"; System.out.print(s); 这段代码看上去s的值是被改 ...
- Java反射机制集中学习
什么是反射 JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法:对于任意一个对象,都能够调用它的任意方法和属性:这种动态获取信息以及动态调用对象方法的功能称为java语言 ...
- js之变量介绍
变量提升 JavaScript的函数定义有个特点,它会先扫描整个函数体的语句,把所有申明的变量“提升”到函数顶部: 'use strict'; function foo() { var x = 'He ...
- ECharts动态数据加载
最近有用到ECharts做可视化报表,小结一下 一.准备数据 1.官网下载echarts.min.js 2.引入jquery.js 3.请求用的json数据 { "list":[ ...
- drupal 基础理论
第3章 Drupal 的基本概念 添加新评论 浏览 6795 次 Drupal的基本概念主要包括节点.内容类型.模块.主题和分类等.只有对这些概念有了足够的了解,方能灵活的构建网站.本章将对这些基本概 ...
- 隐藏 google 地图 Logo 隐藏 百度 地图 Logo
Google 地图 var isFirstLoad=true; //地图瓦片加载完成之后的回调 google.maps.event.addListener(map, 'tilesloaded', fu ...
- arcgis server 10.1 发布动态图层展示海量及频繁更新的数据步骤
Arcgis server 发布动态图层及调用动态图层 做这个动态图层功能的原由是 有一个30万的数据需要通过arcgis GP工具转成shp然后渲染加载进地图,原来的做法是遍历生成shp面要素,读 ...