欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Python 使用office365邮箱的示例

程序员文章站 2022-06-22 11:24:38
一、概述最近遇到一个需求,需要使用office365邮箱发送邮件,使用ssl发送会失败,必须使用tls加密协议才能发送成功。二、完整代码使用类封装了一下,功能如下:1. 支持附件2. 支持多个发件人3...

一、概述

最近遇到一个需求,需要使用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邮箱的资料请关注其它相关文章!