文章目录

  • 一、前言背景
  • 二、个人首秀模块
  • 三、如何打包模块
  • 四、实际运用例子

一、前言背景

前几天学习了smtplib和email模块,Get了新技能——如何用Python发送电子邮件,还能发送超文本、图片以及附件。

简直太赞了!

同时也写了一篇总结文章【Python军火库】smtplib+email:一起来用Python发送电子邮件吧!

欢迎跳转收看。

在写关于smtplib和email的总结文章的时候,我突发奇想,感觉每次写个发送电子邮件的代码要导入这么多模块,还得构造这么些对象,也挺麻烦的。

要是在smtplib和email基础上,自己写个新的模块,通过简单的方法完成登录三方SMTP服务器,构造正文、图片、附件对象以及发送邮件功能,那就方便多了。

而且新的模块还能直接提供给别人安装使用。

那简直太棒了!

但是要是实现这个想法,对于目前还知识浅薄的我来说,还面临着两大难题:

  1. 如何写一个模块,能够供其他Python程序进行调用相关属性和方法
  2. 如何打包一个模块,能够在其他电脑上安装并使用

二、个人首秀模块

首先解决第一问题:

如何写一个模块,能够供其他Python程序进行调用相关属性和方法

虽然我隐约知道这件事应该需要用到类的知识,但是由于之前的学习中并没有过多接触和应用关于的类的知识,也趁着这次初步学习了下。

最终个人首秀模块Pyemail诞生了

下面简单介绍一下Pyemail

模块名Pyemail

包含类PyEmail()

实例化mail = PyEmail('mixed')。参数有:alternative,related,mixed(来自于email模块)

登录三方SMTPmail.enter(mail_host=, port=, mail_user, mail_pass=)

  • 第一参数是第三方SMTP地址
  • 第二参数是对应端口
  • 第三参数是邮箱账号
  • 第四参数是授权码

发送邮件mail.sendemail(sender=, receivers=)

  • 第一参数是发送者邮箱地址(字符串格式)
  • 第二参数是接收者邮箱地址(字符串的列表)

构造头部信息mail.header_info(from_= ; to_= ; subject= )

  • 第一参数是发件人(字符串格式)
  • 第二参数是收件人(字符串格式)
  • 第三参数是主题信息(字符串格式)

构造纯文本内容mail.Text(text=)

  • 唯一参数text,纯文本内容(字符串格式)

构造超文本内容mail.Html(hype_text=)

  • 唯一参数hype_text,超文本内容(字符串格式)

构造图片内容mail.Image(pic_address=, pic_cid)

  • 第一参数是图片地址(字符串格式)
  • 第二参数是图片id(字符串格式),与超文本中cid保持一致

构造附件内容mail.Enc(enc_address=. enc_name=)

  • 第一参数是附件地址(字符串格式)
  • 第二参数是附件名称(字符串格式),在邮件中显示的名称

以上就是整个Pyemail模块中拥有的所有内容。

三、如何打包模块

接下来解决第二个问题:

如何打包一个模块,能够在其他电脑上安装并使用

当然简单搜索下,CSDN上就有很多教程文章,在这里自己也进行复盘总结下。

第一步:创建setup.py

注意setup.py文件要和包放在同一个文件夹

from distutils.core import setupsetup(name='Pyemail',                                        # 需要打包的名字version='v1.0',                                           # 版本py_modules=['Pyemail'],                           # 需要打包的模块author='nilvya',                                         # 作者author_email='lt.nilvyaya@qq.com'         # 作者邮箱
)

第二步:构建模块

打开命令提示符,cd命令进入到模块所在的文件夹,再执行

Python setup.py build

成功后就会发现该文件夹多了一个【build】文件夹

第三步:生成压缩包

同样在该文件夹下执行命令

Python setup.py sdist

OK!之后就可以通过我们基操的:pip install Pyemail 来安装模块了。

四、实际运用例子

用实际的代码来演示下

from Pyemail import PyEmail# 实例化
mail = PyEmail('mixed')# 登录QQ邮箱的SMTP服务器
mail_host = 'smtp.qq.com'                                                   # QQ邮箱SMTP服务器地址
mail_user = 'lt.nilvya@qq.com'                                            # 邮箱账号
mail_pass = 'aaabbbbccc'                                            # 邮箱授权码
mail.enter(mail_host, 587, mail_user, mail_pass)# 构造邮件头部信息
mail.header_info('nilvya', 'ltxxx', '发送测试')# 构造纯文本内容
mail.Text('这是一个来自Python的发送邮件测试')# 构造超文本内容
html_text = """<p>CSDN首页</p><p><a href="https://www.csdn.net/">欢迎进入CSDN</a></p> <p>图片演示1:</p><p><img src="cid:image1"></p><p>图片演示2:</p><p><img src="cid:image2"></p>
"""
mail.Html(html_text)# 构造图片内容
mail.Image('开启QQ邮箱的SMTP服务.png','image1')
mail.Image('随机截图.png','image2')# 构造附件内容
mail.Enc('test.txt', '测试文本.txt')# 发送邮件
sender = 'lt.nilvya@qq.com'                                                # 发件人邮箱地址
receivers = ['*********@qq.com']                                     # 收件人邮箱地址
mail.sendemail(sender, receivers)

最后运行程序,窗口显示

自己的QQ邮箱中也会马上收到相应邮件。

大功告成!

(PS:关于Pyemail模块我也已经上传,有需要的伙伴可以下载)

【私人订制Python模块库】Pyemail:更方便快捷地发送电子邮件相关推荐

  1. python中库是什么意思,python中的库、包、模块和脚本是什么意思

    它们的意思基本上是一样的,一个或一组包含python代码的文件,python使它们之间的区别变得透明,因此不那么重要.但它们的含义略有不同.在 "脚本"是主要用于执行的.py文件, ...

  2. Python使用技巧(十一):图像处理skimage模块库的安装与使用

    一.介绍 skimage包的全称是scikit-image SciKit (toolkit for SciPy) ,它对scipy.ndimage进行了扩展,提供了更多的图片处理功能.它是由pytho ...

  3. 在Ubuntu 14.04.5 LTS上安装python模块selenium 3实录

    简介 Selenium是python模块库中一组web自动化测试工具集,提供多种语言的API,例如java,python,ruby,.net等,支持Firefox,Chrome,IE,Safari 等 ...

  4. 使用Python发送电子邮件

    by Arjun Krishna Babu 通过Arjun Krishna Babu 如何使用Python发送电子邮件 (How to send emails using Python) As a l ...

  5. 500个Python模块(库)的详细分类介绍

    常用模块 Chardet-------------字符编码探测器,可以自动检测文本.网页.xml的编码.colorama------------主要用来给文本添加各种颜色,并且非常简单易用.Prett ...

  6. python标准库模块

    06/07 20:10:08 编译 0.1. 关于本书 0.2. 代码约定 0.3. 关于例子 0.4. 如何联系我们 核心模块 1.1. 介绍 1.2. _ _builtin_ _ 模块 1.3. ...

  7. Python标准库asyncio模块基本原理浅析

    Python标准库asyncio模块基本原理浅析 本文环境python3.7.0 asyncio模块的实现思路 当前编程语言都开始在语言层面上,开始简化对异步程序的编程过程,其中Python中也开始了 ...

  8. python常用模块大全总结-Python模块汇总(常用第三方库)

    模块 定义 计算机在开发过程中,代码越写越多,也就越难以维护,所以为了编写可维护的代码,我们会把函数进行分组,放在不同的文件里.在python里,一个.py文件就是一个模块 优点: 提高代码的可维护性 ...

  9. python第三方库排行-Python模块汇总(常用第三方库)

    模块 定义 计算机在开发过程中,代码越写越多,也就越难以维护,所以为了编写可维护的代码,我们会把函数进行分组,放在不同的文件里.在python里,一个.py文件就是一个模块 优点: 提高代码的可维护性 ...

最新文章

  1. 为什么大型互联网都需要网关服务?
  2. keystone v2 to v3
  3. 自我评价中专计算机600作文,自我评价作文600字
  4. 一起学nRF51xx 4 -  int
  5. 如何删除一个员工编号及其全部主数据和事务数据?
  6. gpgga格式读取MATLAB,GPS编码格式及读取.doc
  7. python3.6.5+cuda9+cudnn7.1+win10+tensorflow-gpu1.9.0下载配置
  8. 第三季-第9课-库函数方式文件编程
  9. 如何PDF转Word文档?快把这些方法收好
  10. CentOS之vim操作
  11. The Monster
  12. 母牛的故事 (C++描述)
  13. html+css瞬间黑暗模式
  14. VIVADO 设计流程介绍
  15. android 多线程 js,JS多线程(web work)
  16. 【2020年牛客暑假第九场】E题 Groundhog Chasing Death
  17. P(NIPAM-co-AdMA)/PtBMA-b-PNIPAM聚(甲基)丙烯酸叔丁酯-b-聚(N-异丙基丙烯酰胺)
  18. Nginx 端口转发实现!
  19. Sanitizable signatures(净化签名) 和 Redactable signatures(可修订签名)
  20. AD CS证书服务中继攻击

热门文章

  1. 奔涌的IPv6背后,DHCPv6协议你了解多少?
  2. vs2019 未知错误解决方法
  3. android 录制mv框架,MVPro MVPro-简单的 AndroidMVP 框架 @codeKK Android开源站
  4. Win7键盘组合快捷键大全
  5. 2016阿里巴巴实习生在线笔试
  6. 企鹅号如何度过新手期,视频运营注意要点,需要几天度过
  7. RNN识别PTB数据代码精解
  8. 基于单片机模拟打地鼠游戏设计-protues仿真毕业
  9. 高等数学期末总复习 DAY 2.判断间断点类型 零点、
  10. 文件批量重命名工具Bulk Rename Utility