Python学习DAY12_网络应用

网络应用

发送电子邮件

        即使在通信软件如此发达的今天,电子邮件仍然是互联网上使用最为广泛的应用之一,公司向应聘者发出录用通知、网站向用户发送一个激活账号的链接、银行向客户推广它们的理财产品等几乎都是通过电子邮件来完成的,而这些任务应该都是由程序自动完成的。

        像我们可以用 HTTP(超文本传输协议)来访问一个网站一样,发送邮件要使用 SMTP(简单邮件传输协议),SMTP 也是一个建立在 TCP(传输控制协议)提供的可靠数据传输服务的基础上的应用级协议,它规定了邮件的发送者如何跟发送邮件的服务器进行通信的细节,而 Python 中的 smtplib 模块将这些操作简化成了几个简单的函数。

        使用Python发送邮件。

from smtplib import SMTP
from email.header import Header
from email.mime.text import MIMETextdef main():# 请自行修改下面的邮件发送者和接收者sender = 'xiaom@163.com'receivers = ['xiaoz@163.com', 'xiaoz@qq.com']message = MIMEText('用Python发送邮件的示例代码.', 'plain', 'utf-8')message['From'] = Header('小明', 'utf-8')message['To'] = Header('小张', 'utf-8')message['Subject'] = Header('小明给小张的邮件内容', 'utf-8')smtper = SMTP('smtp.163.com')# 请自行修改下面的登录口令smtper.login(sender, 'secretpass')smtper.sendmail(sender, receivers, message.as_string())print('邮件发送完成!')if __name__ == '__main__':main()

        如果要发送带有附件的邮件。

from smtplib import SMTP
from email.header import Header
from email.mime.text import MIMEText
from email.mime.image import MIMEImage
from email.mime.multipart import MIMEMultipart
import urllibdef main():# 创建一个带附件的邮件消息对象message = MIMEMultipart()# 创建文本内容text_content = MIMEText('附件中为会议记录', 'plain', 'utf-8')message['Subject'] = Header('会议记录', 'utf-8')# 将文本内容添加到邮件消息对象中message.attach(text_content)# 读取文件并将文件作为附件添加到邮件消息对象中with open('D:/test.txt', 'rb') as f:txt = MIMEText(f.read(), 'base64', 'utf-8')txt['Content-Type'] = 'text/plain'txt['Content-Disposition'] = 'attachment; filename=test.txt'message.attach(txt)# 读取文件并将文件作为附件添加到邮件消息对象中with open('D:/test.xlsx', 'rb') as f:xls = MIMEText(f.read(), 'base64', 'utf-8')xls['Content-Type'] = 'application/vnd.ms-excel'xls['Content-Disposition'] = 'attachment; filename=test.xlsx'message.attach(xls)# 创建SMTP对象smtper = SMTP('smtp.163.com')# 开启安全连接# smtper.starttls()sender = 'xiaom@163.com'receivers = ['xiaoz@163.com']# 登录到SMTP服务器# 请注意此处不是使用密码而是邮件客户端授权码进行登录smtper.login(sender, 'xxxxxx)# 发送邮件smtper.sendmail(sender, receivers, message.as_string())# 与邮件服务器断开连接smtper.quit()print('发送完成!')if __name__ == '__main__':main()

发送短信

        发送短信也是项目中常见的功能,网站的注册码、验证码、营销信息基本上都是通过短信来发送给用户的。

        我们可以使用短信平台提供的API接口实现发送短信的服务,当然国内的短信平台很多,这里选择互亿无线短信平台短信接口_短信验证码_验证码短信平台-互亿无线 (ihuyi.com)。

import urllib.parse
import http.client
import jsondef main():host  = "106.ihuyi.com"sms_send_uri = "/webservice/sms.php?method=Submit"# 下面的参数需要填入自己注册的账号和对应的密码params = urllib.parse.urlencode({'account': '你自己的账号', 'password' : '你自己的密码', 'content': '您的验证码是:147258。请不要把验证码泄露给其他人。', 'mobile': '接收者的手机号', 'format':'json' })print(params)headers = {'Content-type': 'application/x-www-form-urlencoded', 'Accept': 'text/plain'}conn = http.client.HTTPConnection(host, port=80, timeout=30)conn.request('POST', sms_send_uri, params, headers)response = conn.getresponse()response_str = response.read()jsonstr = response_str.decode('utf-8')print(json.loads(jsonstr))conn.close()if __name__ == '__main__':main()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/728063.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java必须掌握的多态的优势和弊端(含面试大厂题含源码)

在面试中,了解一个概念的优势和弊端可以帮助面试官判断应聘者对该概念的深入理解程度以及能否在实际开发中合理运用。下面是一个围绕Java多态优势和弊端的面试题,旨在评估应聘者对多态在实际编程中应用的理解。 面试题: Java多态的优势和弊端 请解释Ja…

1. Gin框架入门

文章目录 一、Gin框架介绍二、RESTful API三、Gin渲染1. HTML渲染2. 自定义模板函数3. 静态文件处理4. 使用模板继承5. 补充文件路径处理6. JSON渲染7. XML渲染8. YMAL渲染9. protobuf渲染 四、Gin获取各种方式传递过来的参数1、获取querystring参数2、获取form参数3、获取path…

Vue3实现页面跳转功能

目标: 首页: 点击About后: 第一步:安装 Vue Router和创建你先 npm install vue-router4第二步:在router.js中设置路由 import { createRouter, createWebHistory } from vue-router; import Home from ./views/Home…

如何写一份简单的产品说明书,教程奉上

如果你是一位新晋产品经理,或者正在研发新产品,并且心中惴惴不安因为未知的产品说明书制作环节,那么今天你就来对地方了。本篇文章将教你如何创建一份简单明了的产品说明书。让我们开始吧! 首先,明确产品说明书的目标。…

达梦数据库基础操作(二):表空间操作

达梦数据库基础操作(二):表空间操作 1. 表空间操作 1.1 达梦表空间介绍 表空间的概念: 每个DM 数据库都是由一个或者多个表空间组成,表空间是一个逻辑的存储容器,它位于逻辑结构的顶层,用于存储数据库中的所有数据&am…

【CSP试题回顾】201503-3-节日

CSP-201503-3-节日 关键点:格式化输出 在C中,格式化输出通常利用iostream库中的功能,特别是iomanip头文件提供的一系列操作符。这些操作符用于控制输出格式,如宽度、填充、对齐方式等。在你提供的代码中,用于格式化输…

基于Springboot+Layui餐厅点餐系统

一、项目背景 在互联网经济飞速发展的时代,网络化企业管理也在其带领下快速兴起,开发一款自主点餐系统会受到众多商家的青睐。现如今市场上的人力资源价格是非常高昂的,一款自主点餐系统可以减少餐厅的人力开销,将服务员从繁忙的…

RESTful接口规范参考

介绍 REST(Representational State Transfe),一种架构设计风格,而不是强制标准,主要用于客户端与服务端接口规范;在现代的软件开发中,RESTful API已经成为应用程序之间通信的重要桥梁&#xff…

【Java】小白友好的Javassist源代码级别常用API学习笔记

目录 介绍 Javassist&ASM? Javassist关键类 常用方法 ClassPool 的常用方法 CtClass 的常用方法 CtMethod 的常用方法 CtField 的常用方法 补充 setSuperclass in Javassist constructor in Javassist toBytecode in Javassist Javassist实现TemplatesImpl恶…

电磁兼容EMC:单、双面板的均匀传输线

目录 1 传输线 2 均匀传输线 3 特征阻抗 4 应用案例 为何要讲单、双面板的均匀传输线?因为均匀传输线能保证信号质量,减少EMC问题,而单双面板没有完整的地和电源平面,很难实现均匀传输线的布线,所以更需要知道如何在…

[数据集][图像分类]玉米叶子病害分类数据集9145张4类别

数据集类型:图像分类用,不可用于目标检测无标注文件 数据集格式:仅仅包含jpg图片,每个类别文件夹下面存放着对应图片 图片数量(jpg文件个数):9145 分类类别数:4 类别名称:["cercospora_leaf_spot gray…

08 |「Fragment 」

前言 实践是最好的学习方式,技术也如此。 文章目录 前言一、简介1、是什么2、为什么要有 Fragment3. Fragment 详细解释 二、Fragment 与 Activity 的直观理解三、Fragment 的创建1、Fragment 的创建方式2、Fragment 的增删替查1) 替换(常见&…

01背包问题 刷题笔记

思路 dp 用f[i][j]来表示当体积为j时 考虑前i件物品可以获得的 最大值 记住f[i][j]本身是个价“价值” 考虑两种状态 是否将第i件物品放入背包里面 将背包的体积从小到大递增来进行考虑 首先 考虑条件 如果当前增加的体积放不下下一件物品 则该体积 可以获得的最大值可以直接…

[剪藏] - 教育系统的成功

我在国内并没有系统地学习语音,在英国也未能成功,现在美国我确定我已经行驶在轨道上了(即使未来的作业分数及格或不及格)。 我反思有这么几点: 1. 美国紧扣系统的教材,不是老师自由发挥。教材是知识精英们…

tidyverse去除表格中含有NA的行

在tidyverse中,特别是使用dplyr包,去除含有NA的行可以通过filter()函数结合is.na()和any()或all()函数来实现。dplyr是tidyverse的一部分,提供了一系列用于数据操作的函数,使数据处理变得更加简单和直观。 以下是一个简单的例子&…

软考笔记--软件系统质量属性

一.软件系统质量属性的概念 软件系统的质量就是“软件系统与明确地和隐含的定义的需求相一致的程度”。更具体地说,软件系统质量就是软件与明确地叙述的功能和性能需求文档中明确描述的开发标准以及任何专业开发的软件产品都应该具有的隐含特征相一致的程度。从管理…

关于汽车E\E架构演进的思考(2)

目录 1.概述 2. 整车通信的限制 3 如何保证融合ECU的功能安全和信息安全 4.小结 1.概述 上篇文章主要聊了当前电子电气架构以及未来电子电气架构的特点,简述了即将要面临的挑战,下面我们继续讲述挑战。 2. 整车通信的限制 下一代架构主要以以太网…

python 爬虫 爬电视剧 小网站没经验别看 这个网站没看到不让爬的公告 也没说流量啥的 应该能爬 你们用的话要注意 只供学习使用 不可商用

在开始运行爬虫之前,请确保已经安装了相关依赖,并且在目标小网站上搜索你想要下载的电视剧名称,确认能够精确搜索到相关内容而没有被禁止爬取或者受到流量限制。如果你对爬虫没有相关经验,建议先撤退。 为了爬取电视剧内容&#…

记一次busybox-mountPath简单但容易忽略的问题open /proc/self/fd: no such file or directory

目录 一.设备条件介绍 二.我的目的 三.问题所在 1.在用以下pod进行测试的时候出现问题 2.报错 3.解决 4.解决完成 一.设备条件介绍 [rootk8s-master pv]# containerd --version containerd containerd.io 1.6.25 d8f198a4ed8892c764191ef7b3b06d8a2eeb5c7f ​ [rootk…

Centos9环境部署MySQL的PXC

前期理解 pxc就是将多个mysql数据库整合为一个集群,每台服务器上的mysql数据库会实时同步,而且节点与节点之间,他们相互的关系是对等的。PXC 最关注的是数据的一致性,对待事物的行为时,要么在所有节点上执行&#xff…