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 12 Python
python使用clear方法清除字典内全部数据实例
Jul 11 Python
Python 高级专用类方法的实例详解
Sep 11 Python
Python中property函数用法实例分析
Jun 04 Python
Scrapy基于selenium结合爬取淘宝的实例讲解
Jun 13 Python
padas 生成excel 增加sheet表的实例
Dec 11 Python
python读写csv文件方法详细总结
Jul 05 Python
Python多线程及其基本使用方法实例分析
Oct 29 Python
Python数据持久化存储实现方法分析
Dec 21 Python
解决django接口无法通过ip进行访问的问题
Mar 27 Python
pandas数据选取:df[] df.loc[] df.iloc[] df.ix[] df.at[] df.iat[]
Apr 24 Python
PyTorch: Softmax多分类实战操作
Jul 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
德劲1107的电路分析与打磨
2021/03/02 无线电
php中获取关键词及所属来源搜索引擎名称的代码
2011/02/15 PHP
PHP中使用gettext解决国际化问题的例子(i18n)
2014/06/13 PHP
linux下安装php的memcached客户端
2014/08/03 PHP
php mysql procedure实现获取多个结果集的方法【基于thinkPHP】
2016/11/09 PHP
php学习笔记之mb_strstr的基本使用
2018/02/03 PHP
PHP给源代码加密的几种方法汇总(推荐)
2018/02/06 PHP
JQuery 插件模板 制作jquery插件的朋友可以参考下
2010/03/17 Javascript
JS数学函数Exp使用说明
2012/08/09 Javascript
javascript复制粘贴与clipboardData的使用
2014/10/16 Javascript
判断字符串的长度(优化版)中文占两个字符
2014/10/30 Javascript
怎么通过onclick事件获取js函数返回值(代码少)
2015/07/28 Javascript
jQuery+HTML5美女瀑布流布局实现方法
2015/09/21 Javascript
js中利用tagname和id获取元素的方法
2016/01/03 Javascript
详解Bootstrap创建表单的三种格式(一)
2016/01/04 Javascript
bootstrap多种样式进度条展示
2016/12/20 Javascript
js canvas实现红包照片效果
2018/08/21 Javascript
创建Vue项目以及引入Iview的方法示例
2018/12/03 Javascript
vue+Element实现搜索关键字高亮功能
2019/05/28 Javascript
python将MongoDB里的ObjectId转换为时间戳的方法
2015/03/13 Python
django批量导入xml数据
2016/10/16 Python
python selenium UI自动化解决验证码的4种方法
2018/01/05 Python
使用Python实现图像标记点的坐标输出功能
2019/08/14 Python
基于python实现把json数据转换成Excel表格
2020/05/07 Python
Python环境管理virtualenv&virtualenvwrapper的配置详解
2020/07/01 Python
Python爬取网页信息的示例
2020/09/24 Python
英国在线购买马术服装:EQUUS
2019/07/12 全球购物
质量月活动策划方案
2014/03/10 职场文书
大二学习计划书范文
2014/04/27 职场文书
领导四风问题整改措施思想汇报
2014/10/13 职场文书
2015年售票员工作总结
2015/04/29 职场文书
信用卡催款律师函
2015/05/27 职场文书
2015年小学财务工作总结
2015/07/20 职场文书
创业计划书之宠物店
2019/09/19 职场文书
python 判断文件或文件夹是否存在
2022/03/18 Python
Linux中sftp常用命令整理
2022/06/28 Servers