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中的exec、eval使用实例
Sep 23 Python
python实现爬虫下载美女图片
Jul 14 Python
Python字符串拼接、截取及替换方法总结分析
Apr 13 Python
Python实现识别手写数字 简易图片存储管理系统
Jan 29 Python
python中的常量和变量代码详解
Jul 25 Python
python实现二维插值的三维显示
Dec 17 Python
python使用KNN算法识别手写数字
Apr 25 Python
python高斯分布概率密度函数的使用详解
Jul 10 Python
pytorch获取vgg16-feature层输出的例子
Aug 20 Python
将python2.7添加进64位系统的注册表方式
Nov 20 Python
logging level级别介绍
Feb 21 Python
解决python3安装pandas出错的问题
May 20 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中读取和写入WORD文档的代码
2008/04/09 PHP
Codeigniter实现智能裁剪图片的方法
2014/06/12 PHP
ThinkPHP结合AjaxFileUploader实现无刷新文件上传的方法
2014/10/29 PHP
phpQuery让php处理html代码像jQuery一样方便
2015/01/06 PHP
php获取Google机器人访问足迹的方法
2015/04/15 PHP
PHP实现发送邮件的方法(基于简单邮件发送类)
2015/12/17 PHP
ThinkPHP中session函数详解
2016/09/14 PHP
Laravel框架使用monolog_mysql实现将系统日志信息保存到mysql数据库的方法
2018/08/16 PHP
ExtJs grid行 右键菜单的两种方法
2010/06/19 Javascript
javascript动态添加样式(行内式/嵌入式/外链式等规则)
2013/06/24 Javascript
jQuery中多个元素的Hover事件解决方案
2014/06/12 Javascript
对jQuary选择器的全面总结
2016/06/20 Javascript
AngularJS实现controller控制器间共享数据的方法示例
2017/10/30 Javascript
vue2.0+koa2+mongodb实现注册登录
2018/04/10 Javascript
简单实现vue中的依赖收集与响应的方法
2019/02/18 Javascript
jQuery中DOM操作原则实例分析
2019/08/01 jQuery
element-ui树形控件后台返回的数据+生成组织树的工具类
2020/03/05 Javascript
Flexible.js可伸缩布局实现方法详解
2020/11/13 Javascript
Nest.js环境变量配置与序列化详解
2021/02/21 Javascript
[58:23]LGD vs TNC 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/16 DOTA
Python 3.x 新特性及10大变化
2015/06/12 Python
Python使用迭代器捕获Generator返回值的方法
2017/04/05 Python
python 列表递归求和、计数、求最大元素的实例
2018/11/28 Python
浅谈python新式类和旧式类区别
2019/04/26 Python
python高斯分布概率密度函数的使用详解
2019/07/10 Python
python logging 日志的级别调整方式
2020/02/21 Python
推荐一些比较有用的css3新属性
2014/11/11 HTML / CSS
Html5之自定义属性(data-,dataset)
2019/11/19 HTML / CSS
互动出版网:专业书籍
2017/03/21 全球购物
资深地理教师自我评价
2013/09/21 职场文书
招商经理岗位职责
2013/11/16 职场文书
互联网电子商务专业毕业生求职信
2014/03/18 职场文书
党的群众路线教育实践活动个人对照检查材料(四风)
2014/11/05 职场文书
收入证明范本
2015/06/12 职场文书
小学生纪律委员竞选稿
2015/11/19 职场文书
Python使用海龟绘图实现贪吃蛇游戏
2021/06/18 Python