Python 使用office365邮箱的示例
一、概述
最近遇到一个需求,需要使用office365邮箱发送邮件,使用SSL发送会失败,必须使用TLS加密协议才能发送成功。
二、完整代码
使用类封装了一下,功能如下:
1.支持附件
2.支持多个发件人
3.执行TLS
MailTools.py
#!/usr/bin/envpython3
#coding:utf-8
importsmtplib#加载smtplib模块
fromemail.mime.textimportMIMEText
fromemail.utilsimportformataddr
fromemail.mime.multipartimportMIMEMultipart
fromemail.mime.applicationimportMIMEApplication
importtime
classSendMail(object):
def__init__(self,sender,title,content):
self.sender=sender#发送地址
self.title=title#标题
self.content=content#发送内容
self.sys_sender='xx@office365.com'#系统账户
self.sys_pwd='123456'#系统账户密码
defsend(self,file_list):
"""
发送邮件
:paramfile_list:附件文件列表
:return:bool
"""
try:
#创建一个带附件的实例
msg=MIMEMultipart()
#发件人格式
msg['From']=formataddr(["",self.sys_sender])
#收件人格式
msg['To']=formataddr(["",self.sender])
#邮件主题
msg['Subject']=self.title
#邮件正文内容
msg.attach(MIMEText(self.content,'plain','utf-8'))
#多个附件
forfile_nameinfile_list:
print("file_name",file_name)
#构造附件
xlsxpart=MIMEApplication(open(file_name,'rb').read())
#filename表示邮件中显示的附件名
xlsxpart.add_header('Content-Disposition','attachment',filename='%s'%file_name)
msg.attach(xlsxpart)
#SMTP服务器
server=smtplib.SMTP("smtp.office365.com",587,timeout=10)
server.ehlo()
server.starttls()
#登录账户
server.login(self.sys_sender,self.sys_pwd)
#发送邮件
server.sendmail(self.sys_sender,[self.sender,],msg.as_string())
#退出账户
server.quit()
returnTrue
exceptExceptionase:
print(e)
returnFalse
if__name__=='__main__':
#发送地址
sender="12345678@qq.com"
#标题
title="测试告警"
#开始时间
start_time=time.strftime('%Y-%m-%d%H:%M:%S')
ip="xx.xx.xx.xx"
#发送内容
content="{}ip:{}掉线".format(start_time,ip)
#附件列表
file_list=[]
ret=SendMail(sender,title,content).send(file_list)
print(ret,type(ret))
注意:请根据实际情况,修改邮件账号和密码。
以上就是Python使用office365邮箱的示例的详细内容,更多关于python使用office邮箱的资料请关注毛票票其它相关文章!