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 json模块使用实例
Apr 11 Python
Python的Django框架中if标签的相关使用
Jul 15 Python
深入浅析python 中的匿名函数
May 21 Python
PyTorch 1.0 正式版已经发布了
Dec 13 Python
Python装饰器语法糖
Jan 02 Python
使用python进行广告点击率的预测的实现
Jul 04 Python
Python PyQt5 Pycharm 环境搭建及配置详解(图文教程)
Jul 16 Python
Flask框架重定向,错误显示,Responses响应及Sessions会话操作示例
Aug 01 Python
python数据类型之间怎么转换技巧分享
Aug 20 Python
python 安装库几种方法之cmd,anaconda,pycharm详解
Apr 08 Python
你应该知道的Python3.6、3.7、3.8新特性小结
May 12 Python
python中用Scrapy实现定时爬虫的实例讲解
Jan 18 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
用cookies来跟踪识别用户
2006/10/09 PHP
php curl模拟post请求小实例
2013/11/13 PHP
PHP中设置一个严格30分钟过期Session面试题的4种答案
2014/07/30 PHP
php生成xml时添加CDATA标签的方法
2014/10/17 PHP
php搜索文件程序分享
2015/10/30 PHP
Yii视图操作之自定义分页实现方法
2016/07/14 PHP
用js得到网页中所有的div的id
2020/10/19 Javascript
转换json格式的日期为Javascript对象的函数
2010/07/13 Javascript
基于jquery的复制网页内容到WORD的实现代码
2011/02/16 Javascript
JS简单实现多级Select联动菜单效果代码
2015/09/06 Javascript
Bootstrap Table服务器分页与在线编辑应用总结
2016/08/08 Javascript
AngularJS基于factory创建自定义服务的方法详解
2017/05/25 Javascript
解决Vue 刷新页面导航显示高亮位置不对问题
2019/12/25 Javascript
element跨分页操作选择详解
2020/06/29 Javascript
UEditor 自定义图片视频尺寸校验功能的实现代码
2020/10/20 Javascript
[01:27]2014DOTA2展望TI 剑指西雅图IG战队专访
2014/06/30 DOTA
深入理解Python中装饰器的用法
2016/06/28 Python
Python3调用微信企业号API发送文本消息代码示例
2017/11/10 Python
Python实现base64编码的图片保存到本地功能示例
2018/06/22 Python
Django之无名分组和有名分组的实现
2019/04/16 Python
如何基于Python实现电子邮件的发送
2019/12/16 Python
pytorch获取模型某一层参数名及参数值方式
2019/12/30 Python
python字符串判断密码强弱
2020/03/18 Python
django xadmin中form_layout添加字段显示方式
2020/03/30 Python
python opencv 实现读取、显示、写入图像的方法
2020/06/08 Python
Html5新特性用canvas标签画多条直线附效果截图
2014/06/30 HTML / CSS
Waterford加拿大官方网站:世界著名的水晶杯品牌
2016/11/01 全球购物
Linux中如何用命令创建目录
2016/12/02 面试题
美丽家庭事迹材料
2014/05/03 职场文书
2014年行风建设工作总结
2014/12/01 职场文书
2014年纪委工作总结
2014/12/05 职场文书
企业2014年度工作总结
2014/12/10 职场文书
2015年化验室工作总结
2015/04/23 职场文书
毕业论文答辩开场白和结束语
2015/05/27 职场文书
领导莅临指导欢迎词
2015/09/30 职场文书
小学秋季运动会通讯稿
2015/11/25 职场文书