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实现竖排打印传单手机号码易撕条
Mar 16 Python
常用python编程模板汇总
Feb 12 Python
用tensorflow构建线性回归模型的示例代码
Mar 05 Python
Python常见MongoDB数据库操作实例总结
Jul 24 Python
python 使用re.search()筛选后 选取部分结果的方法
Nov 28 Python
python3实现mysql导出excel的方法
Jul 31 Python
利用Python复制文件的9种方法总结
Sep 02 Python
python实现拉普拉斯特征图降维示例
Nov 25 Python
Python利用多线程同步锁实现多窗口订票系统(推荐)
Dec 22 Python
Python如何在windows环境安装pip及rarfile
Jun 15 Python
keras topN显示,自编写代码案例
Jul 03 Python
聊聊Python String型列表求最值的问题
Jan 18 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解析html的实现代码
2011/08/08 PHP
php explode函数实例代码
2012/02/27 PHP
浅析PKI加密解密 OpenSSL
2013/07/01 PHP
php实现excel中rank函数功能的方法
2015/01/20 PHP
基于jquery的direction图片渐变动画效果
2010/05/24 Javascript
在JavaScript中监听IME键盘输入事件
2011/05/29 Javascript
js 遍历对象的属性的代码
2011/12/29 Javascript
基于jquery实现的图片在各种分辨率下未知的容器内上下左右居中
2014/05/11 Javascript
小巧强大的jquery layer弹窗弹层插件
2015/12/06 Javascript
js 将图片连接转换成base64格式的简单实例
2016/08/10 Javascript
jQuery替换节点用法示例(使用replaceWith方法)
2016/09/08 Javascript
JavaScript实现省市县三级级联特效
2017/05/16 Javascript
Angular4学习笔记之实现绑定和分包
2017/08/01 Javascript
Webpack 4.x搭建react开发环境的方法步骤
2018/08/15 Javascript
element el-input directive数字进行控制
2018/10/11 Javascript
vue elementui 实现搜索栏公共组件封装的实例代码
2020/01/20 Javascript
我所理解的JavaScript中的this指向
2020/09/04 Javascript
openlayers实现图标拖动获取坐标
2020/09/25 Javascript
[37:47]IG vs Winstrike 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
Python中强大的命令行库click入门教程
2016/12/26 Python
Python编程实现的简单Web服务器示例
2017/06/22 Python
Python实现识别手写数字大纲
2018/01/29 Python
Python 中Pickle库的使用详解
2018/02/24 Python
Ubuntu下使用python读取doc和docx文档的内容方法
2018/05/08 Python
在django中自定义字段Field详解
2019/12/03 Python
查看keras的默认backend实现方式
2020/06/19 Python
如何教少儿学习Python编程
2020/07/10 Python
Python读写Excel表格的方法
2021/03/02 Python
用canvas显示验证码的实现
2020/04/10 HTML / CSS
小学生读书感言
2014/02/12 职场文书
2014年教师节演讲稿范文
2014/09/10 职场文书
2014年村支部书记四风对照检查材料思想汇报
2014/10/02 职场文书
2014年计划生育工作总结
2014/11/14 职场文书
Golang 获取文件md5校验的方法以及效率对比
2021/05/08 Golang
Maven学习----Maven安装与环境变量配置教程
2021/06/29 Java/Android
Ruby序列化和持久化存储 Marshal和Pstore介绍
2022/04/18 Ruby