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练习程序批量修改文件名
Jan 16 Python
Python re模块介绍
Nov 30 Python
Python处理Excel文件实例代码
Jun 20 Python
python3 requests中使用ip代理池随机生成ip的实例
May 07 Python
详解Python网络框架Django和Scrapy安装指南
Apr 01 Python
python检测服务器端口代码实例
Aug 31 Python
Django 创建后台,配置sqlite3教程
Nov 18 Python
Python:type、object、class与内置类型实例
Dec 25 Python
python自动化unittest yaml使用过程解析
Feb 03 Python
Python 安装 virturalenv 虚拟环境的教程详解
Feb 21 Python
详解Django配置JWT认证方式
May 09 Python
django restframework serializer 增加自定义字段操作
Jul 15 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 常见郁闷问题答解
2006/11/25 PHP
Zend Studio for Eclipse的java.lang.NullPointerException错误的解决方法
2008/12/06 PHP
深入理解PHP内核(二)之SAPI探究
2015/11/10 PHP
PHP实现在windows下配置sendmail并通过mail()函数发送邮件的方法
2017/06/20 PHP
TP5框架安全机制实例分析
2020/04/05 PHP
Extjs TriggerField在弹出窗口显示不出问题的解决方法
2010/01/08 Javascript
js关闭当前页面(窗口)的几种方式总结
2013/03/05 Javascript
如何实现修改密码时密码框显示保存到cookie的密码
2013/12/10 Javascript
javascript怎么禁用浏览器后退按钮
2014/03/27 Javascript
javascript数据类型验证方法
2015/12/31 Javascript
JS上传组件FileUpload自定义模板的使用方法
2016/05/10 Javascript
Bootstrap表单布局
2016/07/19 Javascript
javascript简单实现跟随滚动条漂浮的返回顶部按钮效果
2016/08/19 Javascript
js按条件生成随机json:randomjson实现方法
2017/04/07 Javascript
解决循环中setTimeout执行顺序的问题
2018/06/20 Javascript
JavaScript实现放大镜效果代码示例
2020/04/29 Javascript
JS实现单张或多张图片持续无缝滚动的示例代码
2020/05/10 Javascript
[00:23]DOTA2群星共贺开放测试 25日无码时代来袭
2013/09/23 DOTA
python实现从web抓取文档的方法
2014/09/26 Python
分析用Python脚本关闭文件操作的机制
2015/06/28 Python
Python标准库sched模块使用指南
2017/07/06 Python
Python多线程原理与用法详解
2018/08/20 Python
Python实现Event回调机制的方法
2019/02/13 Python
如何安装并在pycharm使用selenium的方法
2020/04/30 Python
利用Python实现某OA系统的自动定位功能
2020/05/27 Python
使用 css3 transform 属性来变换背景图的方法
2019/05/07 HTML / CSS
苏宁红孩子母婴商城:redbaby
2017/02/12 全球购物
送给程序员的20个Java集合面试问题
2014/08/06 面试题
汉语言文学毕业生求职信
2013/10/01 职场文书
护士毕业自我鉴定
2014/02/07 职场文书
竞选村长演讲稿
2014/04/28 职场文书
会计学习心得体会
2014/09/09 职场文书
学术会议邀请函
2015/01/30 职场文书
周末问候语大全
2015/11/10 职场文书
一文搞懂Redis中String数据类型
2022/04/03 Redis
JAVA长虹键法之建造者Builder模式实现
2022/04/10 Java/Android