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简单日志处理类分享
Feb 14 Python
Pycharm设置去除显示的波浪线方法
Oct 28 Python
利用python实现AR教程
Nov 20 Python
Python数据可视化:泊松分布详解
Dec 07 Python
Python 生成VOC格式的标签实例
Mar 10 Python
在spyder IPython console中,运行代码加入参数的实例
Apr 20 Python
Django REST 异常处理详解
Jul 15 Python
如何使用Python进行PDF图片识别OCR
Jan 22 Python
python实现三次密码验证的示例
Apr 29 Python
Python爬取用户观影数据并分析用户与电影之间的隐藏信息!
Jun 29 Python
python 字典和列表嵌套用法详解
Jun 29 Python
4种方法python批量修改替换列表中元素
Apr 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中上传大体积文件时需要的设置
2006/10/09 PHP
PHP写UltraEdit插件脚本实现方法
2011/12/26 PHP
Yii配置与使用memcached缓存的方法
2016/07/13 PHP
PHP实现PDO操作mysql存储过程示例
2019/02/13 PHP
动态加载js的几种方法
2006/10/23 Javascript
JavaScript 高级篇之函数 (四)
2012/04/07 Javascript
jquery实现滑动图片自己测试的例子
2013/11/05 Javascript
js操纵dom生成下拉列表框的方法
2014/02/24 Javascript
extJS中常用的4种Ajax异步提交方式
2014/03/07 Javascript
RequireJS使用注意细节
2016/05/15 Javascript
关于动态执行代码(js的Eval)实例详解
2016/08/15 Javascript
JavaScript数据操作_浅谈原始值和引用值的操作本质
2016/08/23 Javascript
jQuery实现动态文字搜索功能
2017/01/05 Javascript
JS实现动态给标签控件添加事件的方法示例
2017/05/13 Javascript
ES6 中可以提升幸福度的小功能
2018/08/06 Javascript
vue实现配置全局访问路径头(axios)
2019/11/01 Javascript
Vue 实现CLI 3.0 + momentjs + lodash打包时优化
2019/11/13 Javascript
如何用Python来理一理红楼梦里的那些关系
2019/08/14 Python
python 微信好友特征数据分析及可视化
2020/01/07 Python
解决tensorflow读取本地MNITS_data失败的原因
2020/06/22 Python
美国羊皮公司:Overland
2018/01/15 全球购物
理肤泉英国官网:La Roche-Posay英国
2019/01/14 全球购物
波兰快递服务:Globkurier.pl
2019/11/08 全球购物
什么是smarty? Smarty的优点是什么?
2013/08/11 面试题
北京麒麟网信息技术有限公司网络游戏测试面试题
2013/09/28 面试题
应届中专生自荐书范文
2014/02/13 职场文书
洗发水广告词
2014/03/13 职场文书
导游个人求职信范文
2014/03/23 职场文书
个人委托书范本
2014/04/02 职场文书
阅兵口号
2014/06/19 职场文书
毕业生工作求职信
2014/06/30 职场文书
敬老月活动总结
2014/08/28 职场文书
党员自我剖析材料(群众路线)
2014/10/06 职场文书
市级三好学生评语
2014/12/29 职场文书
仓管员岗位职责
2015/02/03 职场文书
浅析Python中的随机采样和概率分布
2021/12/06 Python