Python 使用office365邮箱的示例


Posted in Python onOctober 29, 2020

一、概述

最近遇到一个需求,需要使用office365邮箱发送邮件,使用SSL发送会失败,必须使用TLS加密协议才能发送成功。

二、完整代码

使用类封装了一下,功能如下:

1. 支持附件

2. 支持多个发件人

3. 执行TLS

MailTools.py

#!/usr/bin/env python3
# coding: utf-8


import smtplib # 加载smtplib模块
from email.mime.text import MIMEText
from email.utils import formataddr
from email.mime.multipart import MIMEMultipart
from email.mime.application import MIMEApplication
import time

class SendMail(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' # 系统账户密码

  def send(self,file_list):
    """
    发送邮件
    :param file_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'))

      # 多个附件
      for file_name in file_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()
      return True
    except Exception as e:
      print(e)
      return False

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邮箱的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
Python入门之modf()方法的使用
May 15 Python
python定时利用QQ邮件发送天气预报的实例
Nov 17 Python
python使用pycharm环境调用opencv库
Feb 11 Python
关于python写入文件自动换行的问题
Jun 23 Python
对python3中pathlib库的Path类的使用详解
Oct 14 Python
解决Python下json.loads()中文字符出错的问题
Dec 19 Python
Keras Convolution1D与Convolution2D区别说明
May 22 Python
浅谈Python里面None True False之间的区别
Jul 09 Python
python实现最短路径的实例方法
Jul 19 Python
Django项目配置Memcached和Redis, 缓存选择哪个更有优势
Apr 06 Python
手把手教你使用TensorFlow2实现RNN
Jul 15 Python
 分享一个Python 遇到数据库超好用的模块
Apr 06 Python
PyCharm2019.3永久激活破解详细图文教程,亲测可用(不定期更新)
Oct 29 #Python
Ubuntu 20.04安装Pycharm2020.2及锁定到任务栏的问题(小白级操作)
Oct 29 #Python
15个Pythonic的代码示例(值得收藏)
Oct 29 #Python
python 如何设置守护进程
Oct 29 #Python
python 多线程中join()的作用
Oct 29 #Python
pycharm2020.1.2永久破解激活教程,实测有效
Oct 29 #Python
python 实现音频叠加的示例
Oct 29 #Python
You might like
PHP入门速成教程
2007/03/19 PHP
PHP 5.0对象模型深度探索之属性和方法
2008/03/27 PHP
Windows IIS PHP 5.2 安装与配置方法
2009/06/08 PHP
PHP中的output_buffering详细介绍
2014/09/27 PHP
推荐一款PHP+jQuery制作的列表分页的功能模块
2014/10/14 PHP
mac系统下安装多个php并自由切换的方法详解
2017/04/21 PHP
jquery控制listbox中项的移动并排序
2009/11/12 Javascript
JavaScript Chart 插件整理
2010/06/18 Javascript
原生js写的放大镜效果
2012/08/22 Javascript
一个简单的全屏图片上下打开显示网页效果示例
2014/07/08 Javascript
jQuery中unwrap()方法用法实例
2015/01/16 Javascript
原生JS实现首页进度加载动画
2016/09/14 Javascript
Node.js开启Https的实践详解
2016/10/25 Javascript
深入理解requireJS-实现一个简单的模块加载器
2018/01/15 Javascript
vue中slot(插槽)的介绍与使用
2018/11/12 Javascript
python分析作业提交情况
2017/11/22 Python
Python使用matplotlib的pie函数绘制饼状图功能示例
2018/01/08 Python
Python简单实现控制电脑的方法
2018/01/22 Python
python实现扫描ip地址的小程序
2019/04/16 Python
python字典的遍历3种方法详解
2019/08/10 Python
python利用dlib获取人脸的68个landmark
2019/11/27 Python
使用Python操作ArangoDB的方法步骤
2020/02/02 Python
Python API len函数操作过程解析
2020/03/05 Python
python下对hsv颜色空间进行量化操作
2020/06/04 Python
CSS3属性使网站设计增强同时不消弱可用性
2009/08/29 HTML / CSS
哄娃神器4moms商店:美国婴童用品品牌
2019/03/07 全球购物
英国川宁茶官方网站:Twinings茶
2019/05/21 全球购物
世界顶级户外运动品牌折扣网站:LeftLane Sports
2019/06/12 全球购物
农救科工作职责
2013/11/27 职场文书
初中生期末考试的自我评价
2013/12/17 职场文书
缓刑人员的思想汇报
2014/01/11 职场文书
绘画专业自荐信范文
2014/02/23 职场文书
人力资源管理专业自荐信
2014/06/24 职场文书
委托证明范本
2014/11/25 职场文书
检讨书范文1000字
2015/01/28 职场文书
Nginx域名转发https访问的实现
2021/03/31 Servers