邮件发送
- 简介:
- 邮件服务器、用户名、密码
- 相关协议:
- SMTP:简单邮件传输协议
- POP3:邮局通讯协议
- IMAP:交互式邮件存取协议
- SMTP协议默认端口是25
- 用途:网站注册激活、通知、找回密码等。
- 库:smtplib
- 示例:
import os
import smtplib
from email.mime.text import MIMEText
# 邮箱服务器
mail_server = 'smtp.1000phone.com'
# 用户名
mail_user = 'lijie@1000phone.com'
# 密码 或 授权码(QQ邮箱)
# 为了不对外公开隐私信息,我们可以通过环境变量获取
mail_pwd = os.getenv('MAIL_PASSWORD', '123456')
# 发送的邮件消息
content = '请点击下面链接完成激活<a href="http://www.baidu.com">激活</a>'
# 创建用于发送的邮件消息对象
# 若发送的消息是HTML,需要指定第二个参数进行说明
message = MIMEText(content, 'html')
# 设置主题
message['Subject'] = '账户激活'
# 设置发送者
message['From'] = mail_user
# 创建一个用于发送邮件的对象,加密传输使用这个类:smtplib.SMTP_SSL('smtp.qq.com', 465)
mail = smtplib.SMTP(mail_server, 25)
# 身份认证
mail.login(mail_user, mail_pwd)
# 接收地址,单个传递字符串,多个传列表
to = '488868561@qq.com'
# 发送邮件
mail.sendmail(mail_user, to, message.as_string())
# 结束
mail.quit()
- 总结:
- 邮箱服务器配置
- 创建用于发送的消息对象MIMEText
- 创建用于发送邮件的对象smtplib.SMTP/smtplib.SMTP_SSL
- 使用邮件发送对象发送邮件消息对象
预备知识
- 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
- 说明:使用非常广泛的数据传输格式,现在使用较多的时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 = 'https://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=0&rsv_idx=1&tn=baidu&wd=python&rsv_pq=ac798cd20001b3c5&rsv_t=8b4eWBso%2FMiB2fKr%2FHbj8K8ajXQF9Zrm%2F72a811WkQgVAAliA%2BP66as7QHQ&rqlang=cn&rsv_enter=1&rsv_sug3=7&rsv_sug1=5&rsv_sug7=101&rsv_sug2=0&inputT=2797&rsv_sug4=3093&rsv_sug=1'
# 解析url
p = urlparse(url)
# print(p.query)
# 解析参数:将请求字符串转换为字典
d2 = parse_qs(p.query)
print(d2)
短信发送
- 说明:注册验证码、通知消息、营销短信等
- 平台:阿里、秒嘀、云之讯、...
- 认识:云之讯(www.ucpaas.com)
- 实例:
# 账户id
sid = 'c1d54bae74e733d2b7e39f19ff006244'
# 账户token
token = '2426bff7df8ff95f59fcbcdce3362c58'
# 应用标识
appid = 'fac78e7f7f0647c7a47c4809ff564f5c'
# 模板id
templateid = '291768'
# 模板参数,多个使用英文逗号隔开
param = 'dahua'
# 手机号
mobile = '17596129603'
# 参数字典
form_data = {
'sid': sid,
'token': token,
'appid': appid,
'templateid': templateid,
'param': param,
'mobile': mobile
}
# 将字典转换为JSON字符串
import json
form_data = json.dumps(form_data)
# print(form_data)
# 创建'浏览器'对象
import http.client
connect = http.client.HTTPConnection('open.ucpaas.com')
# 请求地址
url = 'https://open.ucpaas.com/ol/sms/sendsms'
# 请求头
headers = {
'Accept': 'application/json',
'Content-Type': 'application/json;charset=utf-8'
}
# 发送请求
connect.request(method='POST', url=url, body=form_data, headers=headers)
# 获取响应
resp = connect.getresponse()
# 打印结果
print(resp.read().decode('utf-8'))