【测试工具】python实现foxmail发送邮件

背景介绍:

       工作中,经常会有需要定时去发送邮件的情况,比如每周五下班前需要给项目组成员发一个项目周报。内容模板格式基本固定,变化的都是一些统计工作量数据,如编写测试用例数量、执行用例数量、提交bug数量、待验证缺陷数等数据。

数据可以从相关测试系统去自动生成或者手工统计,但是需要手工去填写邮件数据并进行发送也是一个浪费时间的事情,最重要的是到周五下班经常会忘记发邮件啊有木有?走到半路想起忘记发周报了,简直是一个很崩溃的事情。

解决思路:

        所以考虑实现自动发送项目周报,具体思路如下:

        1.获取项目进展数据,从系统接口获取(省略)或者通过数据库获取。

        2.python自动发送邮件

具体实现:

# coding=utf-8
from exchangelib import Credentials, Account, DELEGATE, Configuration, NTLM, Message, Mailbox, HTMLBody, FileAttachment
from exchangelib.protocol import BaseProtocol, NoVerifyHTTPAdapter
import urllib3

urllib3.disable_warnings()  # 取消SSL安全连接警告
BaseProtocol.HTTP_ADAPTER_CLS = NoVerifyHTTPAdapter


def SendEmail(to, subject):
    """
    邮件发送
    :param to: 收件人
    :param subject: 邮件主题
    :return: 无
    """
    
    cred = Credentials('first\\用户名', 'password')  # 配置邮箱域账号、密码
    config = Configuration(
        server='mail.fxxx.com', # 邮箱服务器
        credentials=cred,
        auth_type=NTLM
        )
    account = Account(
        primary_smtp_address='email.com', # 邮箱地址,如duanwangye@test.com
        config=config,
        autodiscover=False,
        access_type=DELEGATE
        )
    print('你的邮箱已连接')

    # 邮件正文
    case = 80
    bug = 70
    image_file = '1.jpg'
    # 正文显示图片,可以将图像链接到HTML中
    with open(image_file, 'rb') as f:
        my_image = FileAttachment(name=image_file, content=f.read(), is_inline=True, content_id=image_file)
    body = '''<html>   
             <body>各位领导,同事,大家好: <br>
             <p>&nbsp&nbsp以下是本项目的测试简报,具体情况介绍如下:</p>
             1.测试用例执行数:%s<br>
             2.发现bug数量:%s<br>
             <br><img src="cid:%s"><br>
              </body>
               </html>''' % (case, bug, image_file)
    m = Message(
        account=account,
        subject=subject,
        body=HTMLBody(body),
        to_recipients=[Mailbox(email_address=to)]
    )

    # 上传附件
    file = r'C:\Users\duan\Desktop\2.pdf'
    with open(file, 'rb') as f:
        my_file = FileAttachment(name=file, content=f.read(), is_inline=False, content_id=file)
    m.attach(my_file)
    m.attach(my_image)
    m.send()
    print('邮箱已发送,请查收')



if __name__ == '__main__':
    SendEmail("email.com", "测试简报")

测试了一下,邮件发送成功后的样子

  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值