邮件与短信
邮件发送
-
简介:
- 邮件服务器、账户、密码
- 相关协议: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')) 友情提示:出现错误,去查看返回状态码,并进行解决。
秒嘀平台简介