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 GAE、Django导出Excel的方法
Nov 24 Python
python实现一次创建多级目录的方法
May 15 Python
Python字典操作详细介绍及字典内建方法分享
Jan 04 Python
python交互界面的退出方法
Feb 16 Python
详解Python 爬取13个旅游城市,告诉你五一大家最爱去哪玩?
May 07 Python
pandas实现将日期转换成timestamp
Dec 07 Python
python 实现简单的FTP程序
Dec 27 Python
对Tensorflow中tensorboard日志的生成与显示详解
Feb 04 Python
Python BeautifulReport可视化报告代码实例
Apr 13 Python
Keras 加载已经训练好的模型进行预测操作
Jun 17 Python
一篇文章教你用python画动态爱心表白
Nov 22 Python
Python文件的操作示例的详细讲解
Apr 08 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
PHP 常用函数库和一些实用小技巧
2009/01/01 PHP
PHP实现文件下载断点续传详解
2014/10/15 PHP
PHPCMS V9 添加二级导航的思路详解
2016/10/20 PHP
PHP手机短信验证码实现流程详解
2018/05/17 PHP
arguments对象
2006/11/20 Javascript
JQUERY THICKBOX弹出层插件
2008/08/30 Javascript
通过正则格式化url查询字符串实现代码
2012/12/28 Javascript
jQuery封装的获取Url中的Get参数示例
2013/11/26 Javascript
JS 新增Cookie 取cookie值 删除cookie 举例详解
2014/10/10 Javascript
AngularJS iframe跨域打开内容时报错误的解决办法
2015/01/26 Javascript
javascript实现随时变化着的背景颜色
2015/04/02 Javascript
JavaScript数组去重的五种方法
2015/11/05 Javascript
js调用屏幕宽度的简单方法
2016/11/14 Javascript
Vue2 模板template的四种写法总结
2018/02/23 Javascript
JS+HTML5实现获取手机验证码倒计时按钮
2018/08/08 Javascript
详解小程序云开发数据库
2019/05/20 Javascript
jQuery创建折叠式菜单
2019/06/15 jQuery
[01:06:07]2014 DOTA2国际邀请赛中国区预选赛5.21 DT VS CIS
2014/05/22 DOTA
Python采用socket模拟TCP通讯的实现方法
2014/11/19 Python
Python的Django框架使用入门指引
2015/04/15 Python
浅谈python对象数据的读写权限
2016/09/12 Python
浅谈五大Python Web框架
2017/03/20 Python
Python文件操作之合并文本文件内容示例代码
2017/09/19 Python
Python中实现最小二乘法思路及实现代码
2018/01/04 Python
记一次python 内存泄漏问题及解决过程
2018/11/29 Python
python实现文件的备份流程详解
2019/06/18 Python
python3.6使用SMTP协议发送邮件
2020/05/20 Python
python asyncio 协程库的使用
2021/01/21 Python
日本最大的眼镜购物网站:Oh My Glasses
2016/11/13 全球购物
乐高西班牙官方商店:LEGO Shop ES
2019/12/01 全球购物
个人应聘自我评价分享
2013/11/18 职场文书
村委会贫困证明范文
2014/09/21 职场文书
学生检讨书怎么写
2014/10/09 职场文书
2015年学校工作总结范文
2015/04/20 职场文书
前端vue+express实现文件的上传下载示例
2022/02/18 Vue.js
Python使用openpyxl模块处理Excel文件
2022/06/05 Python