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

在这里插入图片描述


一、前言背景

前几天学习了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 setup

setup(
    name='Pyemail',                                        # 需要打包的名字
    version='v1.0',                                           # 版本
    py_modules=['Pyemail'],                           # 需要打包的模块
    author='nilvya',                                         # 作者
    author_email='[email protected]'         # 作者邮箱
)

第二步:构建模块

打开命令提示符,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 = '[email protected]'                                            # 邮箱账号
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 = '[email protected]'                                                # 发件人邮箱地址
receivers = ['*********@qq.com']                                     # 收件人邮箱地址
mail.sendemail(sender, receivers)

最后运行程序,窗口显示
在这里插入图片描述
自己的QQ邮箱中也会马上收到相应邮件。
在这里插入图片描述
大功告成!
在这里插入图片描述
(PS:关于Pyemail模块我也已经上传,有需要的伙伴可以下载)
在这里插入图片描述

在这里插入图片描述

发布了35 篇原创文章 · 获赞 35 · 访问量 2736

猜你喜欢

转载自blog.csdn.net/nilvya/article/details/104658472