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

 更新时间:2019-06-03 00:04:22   作者:佚名   我要评论(0)

发送电子邮件


在即时通信软件如此发达的今天,电子邮件仍然是互联网上使用最为广泛的应用之一,公司向应聘者发出录用通知、网站向用户发送一个激活账号的链

发送电子邮件

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

就像我们可以用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文件打包成EXE应用程序的方法
  • Python Django框架实现应用添加logging日志操作示例
  • Python应用领域和就业形势分析总结
  • python lxml中etree的简单应用
  • Python分支语句与循环语句应用实例分析

相关文章

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

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

    发送电子邮件 在即时通信软件如此发达的今天,电子邮件仍然是互联网上使用最为广泛的应用之一,公司向应聘者发出录用通知、网站向用户发送一个激活账号的链
    2019-06-03
  • python图像和办公文档处理总结

    python图像和办公文档处理总结

    用程序来处理图像和办公文档经常出现在实际开发中,Python的标准库中虽然没有直接支持这些操作的模块,但我们可以通过Python生态圈中的第三方模块来完成这些操
    2019-06-03
  • Python语言进阶知识点总结

    Python语言进阶知识点总结

    数据结构和算法 算法:解决问题的方法和步骤 评价算法的好坏:渐近时间复杂度和渐近空间复杂度。 渐近时间复杂度的大O标记: - 常量时间复杂度 - 布隆过滤器
    2019-06-03
  • python登录WeChat 实现自动回复实例详解

    python登录WeChat 实现自动回复实例详解

    最近实现了一些微信的简单玩法 我们可以通过网页版的微信微信网页版,扫码登录后去抓包爬取信息,还可以post去发送信息。 》》安装itchat这个库 pip inst
    2019-06-03
  • python2和python3在处理字符串上的区别详解

    python2和python3在处理字符串上的区别详解

    python2和python3对于字符串的处理有很大的区别 熟悉了python2的写法用python3时真的会遇到很多问题啊…… 区别 python2中有一种类型叫做unicode型,例
    2019-06-03
  • Python安装与基本数据类型教程详解

    Python安装与基本数据类型教程详解

    人生苦短,我选Python。 Python比其他的语言来说真的简洁多了,很多时候想做的东西都有对应的模块可以导入,平时玩点小东西真心不错。 首先讲一下安装,其实没
    2019-06-03
  • Python动态参数/命名空间/函数嵌套/global和nonlocal

    Python动态参数/命名空间/函数嵌套/global和nonlocal

    1. 函数的动态参数   1.1 *args 位置参数动态传参 def chi(*food): print("我要吃", food) chi("大米饭", "小米饭") 结果:我要吃 ('大米饭', '小米饭')
    2019-06-03
  • Python实现带下标索引的遍历操作示例

    Python实现带下标索引的遍历操作示例

    本文实例讲述了Python实现带下标索引的遍历操作。分享给大家供大家参考,具体如下: 代码如下: #coding=utf-8 #python - 实现带下标索引的遍历.
    2019-06-03
  • Python3+Pycharm+PyQt5环境搭建步骤图文详解

    Python3+Pycharm+PyQt5环境搭建步骤图文详解

    搭建环境: 操作系统:Win10 64bit Python版本:3.7 Pycharm:社区免费版 一、Python3.7安装 下载链接:官网https://www.python.org/downloads/windows/或腾讯
    2019-06-03
  • Python2.7实现多进程下开发多线程示例

    Python2.7实现多进程下开发多线程示例

    简单的基于Python2.7版本的多进程下开发多线程的示例,供大家参考,具体内容如下 可以使得程序执行效率至少提升10倍 #!/usr/bin/env python # -*- coding:
    2019-06-03

最新评论