一、概述

最近遇到一个需求,需要使用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邮箱相关推荐

  1. Python 使用office365邮箱自动发送邮件

    现在公司用的是 office365 的邮箱,有需要自动发邮件的需求,发现了一个还不错的库,写了个小demo,主要是smtp的配置注意下 安装方式 pip install emails import e ...

  2. python office365_Python 使用office365邮箱的示例

    一.概述A2Q免费资源网 最近遇到一个需求,需要使用office365邮箱发送邮件,使用SSL发送会失败,必须使用TLS加密协议才能发送成功.A2Q免费资源网 二.完整代码A2Q免费资源网 使用类封装 ...

  3. [10月4日的脚本] 获取Office365邮箱文件夹的权限

    脚本下载: GetO365MailboxFolderPermission.ziphttp://gallery.technet.microsoft.com/scriptcenter/Script-to- ...

  4. 使用Python读取网易邮箱大师客户端的所有邮件

    文章目录 1. 前言 2. 效果 3. 探究过程 3.1. 找到本地存储的数据库 3.2. 使用Python读取数据库 3.2.1. 代码 4. 探究结果 4.1. 函数 4.1.1. 找到特定邮~箱 ...

  5. 使用Python登录QQ邮箱发送QQ邮件

    这真是黑科技啊,原来推送的广告邮件就是这样产生的.好人用来发节日贺卡,给女朋友纪念邮件:坏人会学着发广告,垃圾邮件.我希望大家能学会了做些有趣的有意义的事情. 今天我带大家实现下简单的发邮件功能.我们 ...

  6. Python之Email邮箱账号抓取

    Python之Email邮箱账号抓取

  7. python发送邮件群发_Python发邮件脚本,Python调用163邮箱SMTP服务实现邮件群发

    邮件营销,一个昔日辉煌,如今没落的广告营销方式,曾经的恶意广告邮件群发,到现在还存留着的大站协议群发,可能还是有不少人能够做到正常群发邮件,但大概率很多人都不会点开邮件查看邮件内容吧,除非是很许可的, ...

  8. 解决Outlook 无法添加 gmail 邮箱、office365邮箱问题,超级简单!

    遇到此类问题查阅了许多资料,都无法解决.亲身经历,特此总结,以便后人乘凉. gmail邮箱添加office365 1.登陆Gmail邮箱,点击添加账号 2.选择Exchange和office365 3 ...

  9. 如何在MFP上使用Office365邮箱账号配置扫描到邮箱之Konica bizhub C226?

    如何在MFP上使用Office365邮箱账号配置扫描到邮箱之Konica bizhub C226? ©Lander Zhang 专注外企按需IT基础架构运维服务,IT Helpdesk 实战培训践行者 ...

最新文章

  1. jquery autocomplete demo
  2. C++ 函数的模板的使用
  3. android.util.AndroidRuntimeException: requestFeature() must be called before adding content
  4. Sublime注释插件--DocBlockr
  5. go语言查询某个值是否在数组中_Go语言数组详解
  6. C#面试题汇总(未完成)
  7. 玩转GIT系列之【如何恢复windows系统下git的状态图标显示】
  8. 锁屏快捷键_全面屏 iPhone 锁屏快捷键美化,让你的 iPhone 更特别
  9. 数字图像处理--图像ROI
  10. 车联网发展对汽车经销商的影响
  11. 蔚来ES8停车场蛇形走位 连撞数车 官方回应:未证明是车辆失控
  12. python中如何调用类takes no arguments_关于python中的 take no arguments 的解决方法
  13. Atitit.index manager api design 索引管理api设计
  14. SQL Server2012安装教程
  15. git 学习指南 学习资料笔记
  16. Guns二次开发目录
  17. SpringCloud整合Sa-Token登录认证+Gateway网关拦截
  18. 聊聊iOS中TCP / UDP 协议
  19. iphone ios 视频采集AVCaptureSessionPresetHigh/Medium/Low分辨率等参数
  20. Unix Domain Socket

热门文章

  1. 苏州新导RFID仓储管理系统带领仓库领域走向智能化
  2. 废话中的极品废话 单反对焦系统全解析
  3. 新手如何组装一台电脑
  4. Android广播常用案例
  5. Linux自动化运维——LVS+Keepalived
  6. 基于树莓派的人脸识别解锁门锁设计
  7. 《Artificial intelligence in healthcare》综述论文阅读
  8. c语言选择结构程序设计报告,《C语言程序设计》实验报告选择结构程序设计.doc...
  9. 45.Cookie、Session、ServletContext数据共享
  10. oracle sys.dbms job,Oracle定时任务之Job和Dbms_job