Python3 使用sm模块发送邮件

sm(Simple Mail)即简单邮件,它是基于python3中的smtplib模块进行的二次开发,功能跟smtplib没什么区别,但是其将繁琐的信息封装过程变得简单化。

ZIP下载地址:https://codeload.github.com/wangluozhe/sm/zip/master

Github地址:https://github.com/wangluozhe/sm

SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式。

发送邮件过程:

1、从smtp服务器中获得授权码(如163或qq的smtp服务器进行授权)

2、使用sm模块进行发送邮件

一、从smtp服务器中获得授权

163邮箱授权(smtp.163.com):

在163中的顶部有个设置,点击进去之后跳转到客户端授权密码,默认设置客户端授权码为关闭状态,点击开启将其打开,然后会有一系列认证过程,完成后输入自己的授权码,再此已完成授权操作,此授权码为登陆时的密码。

qq邮箱授权(smtp.qq.com):

在qq邮箱中顶部也有个设置,点击进去之后跳转到账户,默认设置客户端授权码为关闭状态,点击开启将其打开,然后会有一系列认证过程。

将滚轮向下移动,下来后会看见POP3/SMTP服务,默认是关闭,点击旁边的开启将其打开,点击后会让你进行手机验证,完成后,系统会随机生产一个授权码请务必保管好,再此已完成授权操作,此授权码为登陆时的密码。

好了,授权过程已经完成,除了163和qq之外其它的一些邮件服务器也可以进行授权操作,其它这些你们可以自己去看一看,接下来使用sm模块发送邮件。

二、使用sm模块进行发送邮件

sm模块的认识(此介绍在help帮助也有):

SimpleMail(...)
    SimpleMail(smtp_server,port=25,protocol='SMTP') -> SimpleMail Object

    smtp_server = SMTP服务器地址,如163的smtp@163.com。
    port = SMTP服务端口号,如果协议是SSL,使用465,可自定义端口号。
    protocol = 是使用SMTP或SSL的协议。

login(...)
    sm.login(send_user,send_pass) -> None

    用于登录到SMTP服务器。
    send_user = 邮件用户。
    send_pass = 邮件密码。

message(...)
    sm.message(sender,rect,subject='SimpleMail',content='SimpleMail Mail sent',subtype='plain',level=1) -> str

    生成邮件消息。
    sender = 由发送者的姓名和发送者的地址组成的元组。
    rect = 由收件人或多个收件人和级别组成的列表。
    subject = 邮件主题。
    content = 邮件内容。
    subtype = 邮件类型是plain还是html的。
    level = 当级别为2时,它以抄送发送邮件。当级别为3时,它以密送发送邮件。

    level需要与rect一起使用。当级别不是1时,rect的列表值应该是两个。

message_attach(...)
    sm.message_attach(sender,rect,attach,subject='SimpleMail',content='SimpleMail Mail sent',subtype='plain',level=1) -> str

    生成邮件消息,包括附件。
    sender = 由发送者的姓名和发送者的地址组成的元组。
    rect = 由收件人或多个收件人和级别组成的列表。
    attach = 由一个或多个附件组成的列表或元组。
    subject = 邮件主题。
    content = 邮件内容。
    subtype = 邮件类型是plain还是html的。
    level = 当级别为2时,它以抄送发送邮件。当级别为3时,它以密送发送邮件。

    level需要与rect一起使用。当级别不是1时,rect的列表值应该是两个。

sendmail(...)
    sm.sendmail(send_mail, rect_mail, message) -> bool

    如果消息发送成功,它将返回true,否则它将返回false。
    send_mail = 电子邮件发送者。
    rect_mail = 消息的接收者以列表的形式表示一个或多个收件人。
    message = sm.message 或 sm.message_attach。

例子: 

发送文本邮件

from sm import SimpleMail #导入sm模块的SimpleMail类
sm = SimpleMail('smtp.qq.com') #必填一个参数smtp服务器地址
sm.login('账号','授权码') #登陆smtp服务器
message = sm.message(('发件人名称','发件人地址'),[['收件人地址']]) #封装信息,可以指定多个收件人
rs = sm.sendmail('发件人地址',['收件人地址'],message) #发送邮件,可以指定多个收件人
print(rs) #发送成功返回True否则False

通过上面的介绍大概认识到sm模块的基本结构了,在实例SimpleMail类的时候可以指定协议和端口号,默认为25和SMTP,协议不区分大小写,然后在实例变量中可以使用login登陆到smtp服务器,登陆完成过后可以封装指定的信息,封装过后就可以发送邮件了,是不是特别简单啊,区区几步就完成了发送邮件的整个过程,下面是发送完成后的结果。

发送带附件的邮件

from sm import SimpleMail #导入sm模块的SimpleMail类
sm = SimpleMail('smtp.qq.com') #必填一个参数smtp服务器地址
sm.login('账号','授权码') #登陆smtp服务器
message = sm.message_attach(('发件人名称','发件人地址'),[['收件人地址']],['1.bmp','1.docx','1.png','1.xlsx','1.rar']) #封装信息,可以指定多个收件人
rs = sm.sendmail('发件人地址',['收件人地址'],message) #发送带附件的邮件,可以指定多个收件人
print(rs) #发送成功返回True否则False

通过修改封装信息的函数在添加附件的路径就能成功的发送一封带有附件的邮件,看起来是不是特方便啊,后面还有发送抄送和密送功能的邮件,仅仅就是在封装信息的过程添加一个级别就可以完成,下面是发送成功后的结果。 

抄送发送

from sm import SimpleMail #导入sm模块的SimpleMail类
sm = SimpleMail('smtp.qq.com') #必填一个参数smtp服务器地址
sm.login('账号','授权码') #登陆smtp服务器
message = sm.message_attach(('发件人名称','发件人地址'),[['收件人地址'],['抄送人地址']],['1.bmp','1.docx','1.png','1.xlsx','1.rar'],level=2) #封装信息,级别2为抄送,密送为3
rs = sm.sendmail('发件人地址',['收件人地址'],message) #发送抄送邮件
print(rs) #发送成功返回True否则False

使用message或message_attach都可以完成抄送功能,只需加上一个level即可。

密送发送

from sm import SimpleMail #导入sm模块的SimpleMail类
sm = SimpleMail('smtp.qq.com') #必填一个参数smtp服务器地址
sm.login('账号','授权码') #登陆smtp服务器
message = sm.message_attach(('发件人名称','发件人地址'),[['收件人地址'],['密送地址']],['1.bmp','1.docx','1.png','1.xlsx','1.rar'],level=3) #封装信息,级别2为抄送,密送为3
rs = sm.sendmail('发件人地址',['收件人地址'],message) #发送密送邮件
print(rs) #发送成功返回True否则False

在抄送的基础上修改了级别为3即可发送密送邮件,是不是特别简单啊,快点入手吧。 

再此,基本上介绍完了sm模块的使用了,具体的可以使用help帮助查看一下使用方法,help帮助提供了中文和英文两种帮助,谢谢大家的支持,教程比较简易,如模块需要有改进的地方或者新的功能可以在下发提供具体的信息,谢谢。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值