我最近在做发送邮件相关的一些任务,由于一些原因呢,不打算仅仅为了一个邮件功能就去申请第三方包的使用权限,所以还是决定使用python自带的snmplib来做啊,也很好用。但是第三方包有些做了进一步的封装和更加人性化的优化啊。减少了我们去配置一些麻烦的内容。
email.message.EmailMessage()
EmailMessage()这个类就是email提供的主要内容了,通过它我们可以设置邮件消息的头部,主体内容,还能添加附件。
我们的邮件由header和payload组成,header可以理解为,平时我们收到邮件上方的发件人,收件人,主题,抄送这部分,然后payload就是我们的邮件主体,包括文字性的邮件内容,以及附件。
EmailMessage()这个类是一个dict like的类,也就是说我们可以通过一些类字典的接口来操作,但是注意的是,与一般的字典不同,字典是无序的,EmailMessage()的键是有序的,可以看下面的那个例子,我们设置消息头的时候,是按照顺序来的,键还可以重复,python提供了额外的方法来处理包含重复键的header。
直观的用例
代码用例,下方的代码包含了消息主体的构建,以及通过email.message.EmailMessage()这个类,我们还可以添加附件,非常的方便。依稀记得以前要用一个MIME的包,真的很难用。
message = email.message.EmailMessage() # 邮件头部 message["From"] = "***@gmail.com" message["To"] = ["****@gmail.com", ] message["cc"] = ["****@gmail.com",] message["Bcc"] = ["****@yahoo.in", ] # 主题 message["Subject"] = "Mail with attachments" # 消息主体 body = ''' Hello All, Please find the attached file. Regards, Alex ''' message.set_content(body) # 比如我们附加一个excel文件 with open("report.xlsx", mode="rb") as fp: excel_content = fp.read() message.add_attachment(excel_content, maintype="application", subtype="excel", filename="do