Python学习日志12.5 - 传信

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_SSL对象(连接邮件服务器)
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()

感谢学习陪伴,您的点赞,评论就是我更新的动力

  • 6
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值