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中执行shell命令的几个方法小结
Sep 18 Python
Python中文分词工具之结巴分词用法实例总结【经典案例】
Apr 15 Python
Python入门_条件控制(详解)
May 16 Python
DataFrame 将某列数据转为数组的方法
Apr 13 Python
浅谈pycharm的xmx和xms设置方法
Dec 03 Python
python调用c++ ctype list传数组或者返回数组的方法
Feb 13 Python
pyqt5 实现工具栏文字图片同时显示
Jun 13 Python
pymysql 开启调试模式的实现
Sep 24 Python
Flask中endpoint的理解(小结)
Dec 11 Python
Pandas缺失值2种处理方式代码实例
Jun 13 Python
python - timeit 时间模块
Apr 06 Python
python通过函数名调用函数的几种方法总结
Jun 07 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使用异步调用获取数据时出现(错误c00ce56e导致此项操作无法完成)
2013/07/03 PHP
php汉字转拼音的示例
2014/02/27 PHP
php强制运行广告的方法
2014/12/01 PHP
WordPress中给文章添加自定义字段及后台编辑功能区域
2015/12/19 PHP
[原创]php集成安装包wampserver修改密码后phpmyadmin无法登陆的解决方法
2016/11/23 PHP
PHP去除字符串最后一个字符的三种方法实例
2017/03/01 PHP
自动检查并替换文本框内的字符
2006/06/30 Javascript
Jquery css函数用法(判断标签是否拥有某属性)
2011/05/28 Javascript
JavaScript中的作用域链和闭包
2012/06/30 Javascript
JSON为什么那样红为什么要用json(另有洞天)
2012/12/26 Javascript
小米公司JavaScript面试题
2014/12/29 Javascript
基于jQuery实现的仿百度首页滑动选项卡效果代码
2015/11/16 Javascript
原生js实现百叶窗效果及原理介绍
2016/04/12 Javascript
AngularJS 指令详细介绍
2016/07/27 Javascript
JS中使用 after 伪类清除浮动实例
2017/03/01 Javascript
Angular 4中如何显示内容的CSS样式示例代码
2017/11/06 Javascript
JS实现简单的浮动碰撞效果示例
2017/12/28 Javascript
Vue项目pdf(base64)转图片遇到的问题及解决方法
2018/10/19 Javascript
JS JQuery获取data-*属性值方法解析
2020/09/01 jQuery
Python简单连接MongoDB数据库的方法
2016/03/15 Python
python 显示数组全部元素的方法
2018/04/19 Python
Python基于Hypothesis测试库生成测试数据
2020/04/29 Python
python爬虫把url链接编码成gbk2312格式过程解析
2020/06/08 Python
在 Windows 下搭建高效的 django 开发环境的详细教程
2020/07/27 Python
Python中logger日志模块详解
2020/08/04 Python
沙龙级头发造型工具:FOXYBAE
2018/07/01 全球购物
C面试题
2015/10/08 面试题
积极分子思想汇报
2014/01/04 职场文书
浪费资源的建议书
2014/03/12 职场文书
上海世博会志愿者口号
2014/06/17 职场文书
热情服务标语
2014/10/07 职场文书
运动会表扬稿范文
2015/05/05 职场文书
2015年秋季小学开学典礼主持词
2015/07/16 职场文书
2015年中秋节主持词
2015/07/30 职场文书
施工现场安全管理制度
2015/08/05 职场文书
2016思想纪律作风整顿心得体会
2016/01/23 职场文书