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

作者:laozhang 时间:2021-07-15 00:09:48 

发送电子邮件

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

就像我们可以用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,网络应用
0
投稿

猜你喜欢

  • MS IIS server Frontpage Ext Server漏洞

    2008-05-04 09:54:00
  • 支付宝lab logo设计创意发想

    2009-11-12 12:44:00
  • Python 闭包,函数分隔作用域,nonlocal声明非局部变量操作示例

    2023-07-29 00:03:51
  • Python中利用xpath解析HTML的方法

    2023-10-02 06:55:02
  • JavaScript Date()在页面内显示日期

    2008-02-05 10:18:00
  • php查找指定目录下指定大小文件的方法

    2023-09-03 17:53:36
  • python使用jenkins发送企业微信通知的实现

    2022-06-06 19:40:16
  • 一文详解如何使用Python批量拼接图片

    2023-08-12 04:15:37
  • Mysql的服务无法启动的1067错误解决

    2012-01-05 19:31:56
  • 基于python读取.mat文件并取出信息

    2021-10-24 12:06:26
  • XHTML 和 DOCTYPE 切换

    2007-05-31 09:30:00
  • 使用python 打开文件并做匹配处理的实例

    2022-01-15 16:27:30
  • mysql5存储过程编写实践

    2008-12-24 16:32:00
  • python的数据与matlab互通问题:SciPy

    2022-05-16 04:53:48
  • php实现的微信分享到朋友圈并记录分享次数功能

    2023-10-17 04:32:14
  • Python容器使用的5个技巧和2个误区总结

    2023-04-09 04:37:01
  • 用Oracle并行查询发挥多CPU的威力

    2010-07-23 12:52:00
  • ASP从数据库中获取下载文件

    2007-10-06 21:17:00
  • 详解用python计算阶乘的几种方法

    2021-11-17 00:00:14
  • Python+unittest+requests 接口自动化测试框架搭建教程

    2023-03-27 00:52:07
  • asp之家 网络编程 m.aspxhome.com