python网络应用开发知识点浅析


Posted in Python onMay 28, 2019

发送电子邮件

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

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

下面的代码演示了如何在Python发送邮件。

from smtplib import SMTP
from email.header import Header
from email.mime.text import MIMEText


def main():
  # 请自行修改下面的邮件发送者和接收者
  sender = 'abcdefg@126.com'
  receivers = ['uvwxyz@qq.com', 'uvwxyz@126.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.126.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 urllib


def main():
  # 创建一个带附件的邮件消息对象
  message = MIMEMultipart()
  
  # 创建文本内容
  text_content = MIMEText('附件中有本月数据请查收', 'plain', 'utf-8')
  message['Subject'] = Header('本月数据', 'utf-8')
  # 将文本内容添加到邮件消息对象中
  message.attach(text_content)

  # 读取文件并将文件作为附件添加到邮件消息对象中
  with open('/Users/Hao/Desktop/hello.txt', 'rb') as f:
    txt = MIMEText(f.read(), 'base64', 'utf-8')
    txt['Content-Type'] = 'text/plain'
    txt['Content-Disposition'] = 'attachment; filename=hello.txt'
    message.attach(txt)
  # 读取文件并将文件作为附件添加到邮件消息对象中
  with open('/Users/Hao/Desktop/汇总数据.xlsx', 'rb') as f:
    xls = MIMEText(f.read(), 'base64', 'utf-8')
    xls['Content-Type'] = 'application/vnd.ms-excel'
    xls['Content-Disposition'] = 'attachment; filename=month-data.xlsx'
    message.attach(xls)
  
  # 创建SMTP对象
  smtper = SMTP('smtp.126.com')
  # 开启安全连接
  # smtper.starttls()
  sender = 'abcdefg@126.com'
  receivers = ['uvwxyz@qq.com']
  # 登录到SMTP服务器
  # 请注意此处不是使用密码而是邮件客户端授权码进行登录
  # 对此有疑问的读者可以联系自己使用的邮件服务器客服
  smtper.login(sender, 'secretpass')
  # 发送邮件
  smtper.sendmail(sender, receivers, message.as_string())
  # 与邮件服务器断开连接
  smtper.quit()
  print('发送完成!')


if __name__ == '__main__':
  main()

发送短信

发送短信也是项目中常见的功能,网站的注册码、验证码、营销信息基本上都是通过短信来发送给用户的。在下面的代码中我们使用了互亿无线短信平台(该平台为注册用户提供了50条免费短信以及常用开发语言发送短信的demo,可以登录该网站并在用户自服务页面中对短信进行配置)提供的API接口实现了发送短信的服务,当然国内的短信平台很多,读者可以根据自己的需要进行选择(通常会考虑费用预算、短信达到率、使用的难易程度等指标),如果需要在商业项目中使用短信服务建议购买短信平台提供的套餐服务。

import urllib.parse
import http.client
import json


def 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()
Python 相关文章推荐
python实现类的静态变量用法实例
May 08 Python
python数组复制拷贝的实现方法
Jun 09 Python
Python处理json字符串转化为字典的简单实现
Jul 07 Python
Python遍历某目录下的所有文件夹与文件路径
Mar 15 Python
解决Python print 输出文本显示 gbk 编码错误问题
Jul 13 Python
Python根据文件名批量转移图片的方法
Oct 21 Python
把pandas转换int型为str型的方法
Jan 29 Python
Python数据类型之List列表实例详解
May 08 Python
Python 给下载文件显示进度条和下载时间的实现
Apr 02 Python
基于Python中random.sample()的替代方案
May 23 Python
Python Flask框架实现简单加法工具过程解析
Jun 03 Python
Python必备技巧之函数的使用详解
Apr 04 Python
python进程和线程用法知识点总结
May 28 #Python
selenium+python环境配置教程详解
May 28 #Python
Python从函数参数类型引出元组实例分析
May 28 #Python
python面试题Python2.x和Python3.x的区别
May 28 #Python
Python 3.8新特征之asyncio REPL
May 28 #Python
使用Python-OpenCV向图片添加噪声的实现(高斯噪声、椒盐噪声)
May 28 #Python
Python学习笔记之变量、自定义函数用法示例
May 28 #Python
You might like
一个简单实现多条件查询的例子
2006/10/09 PHP
Adodb的十个实例(清晰版)
2006/12/31 PHP
php Undefined index和Undefined variable的解决方法
2008/03/27 PHP
浅析PHP绘图技术
2013/07/03 PHP
php定时计划任务与fsockopen持续进程实例
2014/05/23 PHP
ThinkPHP中使用Ueditor富文本编辑器
2015/09/02 PHP
获取页面高度,窗口高度,滚动条高度等参数值getPageSize,getPageScroll
2006/09/22 Javascript
jQuery学习7 操作JavaScript对象和集合的函数
2010/02/07 Javascript
IE6下拉框图层问题探讨及解决
2014/01/03 Javascript
21个值得收藏的Javascript技巧
2014/02/04 Javascript
jquery如何判断表格同一列不同行input数据是否重复
2014/05/14 Javascript
node.js下when.js 的异步编程实践
2014/12/03 Javascript
window.location.reload 刷新使用分析(去对话框)
2015/11/11 Javascript
AngularJS 工作原理详解
2016/08/18 Javascript
jQuery实现输入框邮箱内容自动补全与上下翻动显示效果【附demo源码下载】
2016/09/20 Javascript
JavaScript实现星星等级评价功能
2017/03/22 Javascript
深入学习nodejs中的async模块的使用方法
2017/07/12 NodeJs
JavaScript实现的文本框placeholder提示文字功能示例
2018/07/25 Javascript
OpenLayer3自定义测量控件MeasureTool
2020/09/28 Javascript
[01:40]2014DOTA2国际邀请赛 三冰SOLO赛后采访恶搞
2014/07/09 DOTA
Python列表append和+的区别浅析
2015/02/02 Python
Python实现简单网页图片抓取完整代码实例
2017/12/15 Python
Python分支结构(switch)操作简介
2018/01/17 Python
python 利用栈和队列模拟递归的过程
2018/05/29 Python
在keras里实现自定义上采样层
2020/06/28 Python
HTML5如何使用SVG的方法示例
2019/01/11 HTML / CSS
俄罗斯达美乐比萨外送服务:Domino’s Pizza
2020/12/18 全球购物
存储过程和函数的区别
2013/05/28 面试题
会计专业应届生求职信
2013/11/24 职场文书
大学生思想汇报范文
2013/12/31 职场文书
税务干部个人整改措施思想汇报
2014/10/10 职场文书
三好学生竞选稿
2015/11/21 职场文书
2016教师廉洁教育心得体会
2016/01/13 职场文书
祝福语集锦:送给闺蜜的生日祝福语
2019/10/08 职场文书
为什么mysql字段要使用NOT NULL
2021/05/13 MySQL
「租借女友」第2季樱泽墨角色PV&新视觉图公开
2022/03/21 日漫