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中degrees()方法的使用
May 18 Python
Python中的super用法详解
May 28 Python
在Django中管理Users和Permissions以及Groups的方法
Jul 23 Python
Python编程中对文件和存储器的读写示例
Jan 25 Python
Python判断列表是否已排序的各种方法及其性能分析
Jun 20 Python
浅析Python pandas模块输出每行中间省略号问题
Jul 03 Python
对Python使用mfcc的两种方式详解
Jan 09 Python
python3实现zabbix告警推送钉钉的示例
Feb 20 Python
pandas DataFrame索引行列的实现
Jun 04 Python
python实现屏保程序(适用于背单词)
Jul 30 Python
python3爬虫中多线程进行解锁操作实例
Nov 25 Python
利用Python实现翻译HTML中的文本字符串
Jun 21 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产生动态的影像图
2006/10/09 PHP
php设计模式之命令模式使用示例
2014/03/02 PHP
php输入数据统一类实例
2015/02/23 PHP
SSO单点登录的PHP实现方法(Laravel框架)
2016/03/23 PHP
Thinkphp5行为使用方法汇总
2017/12/21 PHP
php 替换文章中的图片路径,下载图片到本地服务器的方法
2018/02/06 PHP
在 Laravel 项目中使用 webpack-encore的方法
2019/07/21 PHP
HTML IMG标签 onload 内存溢出导致浏览器CPU占用过高
2021/03/09 Javascript
JQuery对class属性的操作实现按钮开关效果
2013/10/11 Javascript
jquery html动态生成select标签出问题的解决方法
2013/11/20 Javascript
jquery通过closest选择器修改上级元素的方法
2015/03/17 Javascript
AngularJS 实现按需异步加载实例代码
2015/10/18 Javascript
ashx文件获取$.ajax()方法发送的数据
2016/05/26 Javascript
jQuery Ajax 全局调用封装实例代码详解
2016/06/02 Javascript
谈谈JavaScript的New关键字
2016/08/26 Javascript
无法获取隐藏元素宽度和高度的解决方案
2017/03/07 Javascript
Vue.js用法详解
2017/11/13 Javascript
JavaScript实现PC端四格密码输入框功能
2020/02/19 Javascript
[01:31:03]DOTA2完美盛典全回顾 见证十五项大奖花落谁家
2017/11/28 DOTA
Python3实现抓取javascript动态生成的html网页功能示例
2017/08/22 Python
python中学习K-Means和图片压缩
2017/11/20 Python
python 设置文件编码格式的实现方法
2017/12/21 Python
Python利用sqlacodegen自动生成ORM实体类示例
2019/06/04 Python
python binascii 进制转换实例
2019/06/12 Python
Python 实现遥感影像波段组合的示例代码
2019/08/04 Python
Tensorflow卷积实现原理+手写python代码实现卷积教程
2020/05/22 Python
在Keras中实现保存和加载权重及模型结构
2020/06/15 Python
英国工具中心:UK Tool Centre
2017/07/10 全球购物
中国跨境电子商务网站:NewFrog
2018/03/10 全球购物
39美元购买一副眼镜或太阳镜:39DollarGlasses.com
2018/06/17 全球购物
给老婆的搞笑检讨书
2014/01/12 职场文书
药学专业学生的自我评价分享
2014/02/06 职场文书
班主任2015新年寄语
2014/12/08 职场文书
暑期家教宣传单
2015/07/14 职场文书
对Keras自带Loss Function的深入研究
2021/05/25 Python
Python爬取奶茶店数据分析哪家最好喝以及性价比
2022/09/23 Python