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 包中短信的同意状态
Python 自动化指南(繁琐工作自动化)第二版:十八发送电子邮件和短信