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的Django框架代码的一些示例
Apr 20 Python
Python3实现将文件树中所有文件和子目录归档到tar压缩文件的方法
May 22 Python
Python编程中的文件读写及相关的文件对象方法讲解
Jan 19 Python
利用Python-iGraph如何绘制贴吧/微博的好友关系图详解
Nov 02 Python
Python 错误和异常代码详解
Jan 29 Python
Python英文文本分词(无空格)模块wordninja的使用实例
Feb 20 Python
Python进程间通信Queue消息队列用法分析
May 22 Python
余弦相似性计算及python代码实现过程解析
Sep 18 Python
python数据预处理 :数据共线性处理详解
Feb 24 Python
Keras设置以及获取权重的实现
Jun 19 Python
解决pytorch 交叉熵损失输出为负数的问题
Jul 07 Python
详解Python模块化编程与装饰器
Jan 16 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
PHP5中新增stdClass 内部保留类
2011/06/13 PHP
php调用新浪短链接API的方法
2014/11/08 PHP
详解PHP实现执行定时任务
2015/12/21 PHP
php微信公众号开发(3)php实现简单微信文本通讯
2016/12/15 PHP
提高 DHTML 页面性能
2006/12/25 Javascript
9个javascript语法高亮插件 推荐
2009/07/18 Javascript
JavaScript中各种编码解码函数的区别和注意事项
2010/08/19 Javascript
javaScript复制功能调用实现方案
2012/12/13 Javascript
jQuery简单tab切换效果实现方法
2015/04/08 Javascript
jQuery实现动画效果circle实例
2015/08/06 Javascript
Ubuntu系统下Angularjs开发环境安装
2016/09/01 Javascript
webix+springmvc session超时跳转登录页面
2016/10/30 Javascript
Bootstrap table表格简单操作
2017/02/07 Javascript
JS实现禁止用户使用Ctrl+鼠标滚轮缩放网页的方法
2017/04/28 Javascript
在vue.js中抽出公共代码的方法示例
2017/06/08 Javascript
Vue 2中ref属性的使用方法及注意事项
2017/06/12 Javascript
Angular angular-file-upload文件上传的示例代码
2018/08/23 Javascript
jQuery 点击获取验证码按钮及倒计时功能
2018/09/20 jQuery
angularJs中$scope数据序列化的实例
2018/09/30 Javascript
详解easyui 切换主题皮肤
2019/04/04 Javascript
egg.js的基本使用和调用数据库的方法示例
2019/05/18 Javascript
Vuex,iView UI面包屑导航使用扩展详解
2019/11/04 Javascript
Vue-axios-post数据后端接不到问题解决
2020/01/09 Javascript
python3.0 字典key排序
2008/12/24 Python
在Python的struct模块中进行数据格式转换的方法
2015/06/17 Python
python django使用haystack:全文检索的框架(实例讲解)
2017/09/27 Python
Python中的CSV文件使用"with"语句的方式详解
2018/10/16 Python
python文件选择对话框的操作方法
2019/06/27 Python
Django用户身份验证完成示例代码
2020/04/03 Python
pygame实现弹球游戏
2020/04/14 Python
维多利亚的秘密官方旗舰店:VICTORIA’S SECRET
2018/04/02 全球购物
投标担保书范文
2014/04/02 职场文书
自查自纠工作情况报告
2014/10/29 职场文书
有限责任公司股东合作协议书
2014/12/02 职场文书
党员示范岗材料
2014/12/19 职场文书
python必学知识之文件操作(建议收藏)
2021/05/30 Python