Python学习日志
RBHGO的主页欢迎关注
温馨提示:创作不易,如有转载,注明出处,感谢配合~
目录
前言
这篇算是办公自动化的扩充吧,发送邮件和发送短信的程序写出来复用性也是很高的,每次使用都只要稍微修改特定参数,基本上就能运行起来。它也是帮我们解决重复的劳动步骤,让学习、办公的过程变得轻松愉悦。
下面分享的内容中有* 的地方,填入自己的信息就行。
Python学习日志12.5课 - 传信
Python发送电子邮件
即使是在即时通信软件如此发达的2021,电子邮件仍然是在互联网上被广泛使用的应用,公司向应聘者发出录用通知、网站向用户发送一个激活账号的链接、验证码、销售员向客户推广产品等几乎都会通过电子邮件来完成,而这些任务应该都是由程序自动完成的。
就像我们可以用HTTP(超文本传输协议)来访问一个网站一样,发送邮件要使用SMTP(简单邮件传输协议),SMTP也是一个建立在TCP(传输控制协议)提供的可靠数据传输服务的基础上的应用级协议,它规定了邮件的发送者如何跟发送邮件的服务器进行通信的细节,而Python中的smtplib 模块将这些操作简化成了几个简单的函数。
"""
Python发送邮件
SMTP -> 简单邮件传输协议 -> simple mail transfer protocol
我们注册的邮箱一般都提供了SMTP服务,我们利用这个服务就可以用Python程序实现邮件发送
Author: RBHGO
Declaration: Mia San Mia ~~~
"""
import smtplib
from email.header import Header
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from urllib.parse import quote
def create_attachment(path, filename):
with open(f'{path}/{filename}', 'rb') as file:
attachment = MIMEText(file.read(), 'base64', 'utf-8')
attachment['content-type'] = 'application/octet-stream'
filename = quote(filename)
attachment['content-disposition'] = f'attachment; filename="{filename}"'
return attachment
email = MIMEMultipart()
email['From'] = Header('7*******7@qq.com')
email['To'] = Header('********@outlook.com')
email['Subject'] = Header('文件请查收', 'utf-8')
content = """8月10号梅西正式宣布加入巴黎圣日尔曼,他将身披30号球衣。"""
email.attach(MIMEText(content, 'plain', 'utf-8'))
email.attach(create_attachment('resources', 'RBHGO的python日志.docx'))
smtp_obj = smtplib.SMTP_SSL('smtp.qq.com', 465)
smtp_obj.login('7*******7@qq.com', 'iv*****mm*****ee')
smtp_obj.sendmail(
'7*******7@qq.com',
['********@outlook.com'],
email.as_string()
)
Python发送短信
发送短信也是项目中常见的功能,网站的注册码、验证码、其他信息基本上都是通过短信来发送给用户的。有一些网站(短信平台)会提供API接口实现了发送短信的服务(一般这类平台为注册用户提供了一些免费短信数量以及常用开发语言发送短信的demo,可以登录该网站并在用户自服务页面中对短信进行配置)。
我使用的是sendcloud 提供的API接口实现了发送短信的服务,当然国内的短信平台很多,读者可以根据自己的需要进行选择(通常会考虑费用预算、短信达到率、使用的难易程度等指标),如果需要在商业项目中使用短信服务建议购买短信平台提供的套餐服务。
"""
Python发短信
Request支持HTTP连接保持和连接池,支持使用cookie保持会话,支持文件上传,支持自动响应内容的编码,支持国际化的URL和POST数据自动编码。
在python内置模块的基础上进行了高度的封装,从而使得python进行网络请求时,变得人性化,使用Requests可以轻而易举的完成浏览器可有的任何操作。
Author: RBHGO
"""
import random
import requests
def send_message_by_luosimao(tel, message):
"""发送短信"""
resp = requests.post(
url='https://sendcloud.sohu.com/v3/#/backend/dashborad.json',
auth=('api', 'key-bc3e3*****153d*****a*****6f*****'),
data={
'mobile': tel,
'message': message
},
timeout=10,
verify=False
)
return resp.json()
def gen_mobile_code(length=6):
"""生成指定长度的手机验证码"""
return ''.join(random.choices('0123456789', k=length))
def main():
code = gen_mobile_code()
message = f'您的短信验证码是{code},请注意保护隐私!【Python分享课】'
print(send_message_by_luosimao('19*******66', message))
if __name__ == '__main__':
main()
感谢学习陪伴,您的点赞,评论就是我更新的动力
|