自动发邮件

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Project : pythonProject
# File     : sendmail.py
# @Time    : 2022/4/2 22:40
# @Author  : lilu

"""
1,导包
2,建立连接
3、身份认证
4.发送邮件
5、邮件内容:发送人,接收人,主题,内容
"""

import smtplib
from email.mime.multipart import MIMEMultipart  # 发送邮件
from email.mime.text import MIMEText  # 邮件内容
from email.mime.image import MIMEImage  # 发送图片
from test_api.common.readconf import readconf
from email.header import Header
from test_api.common.log import *


def sendmail():
    # 设置smtplib所需要的参数
    # 服务器地址
    email_info = readconf('email_info')
    smtp_server = email_info["smtp_server"]
    # 发送人邮件账户密码
    username = email_info["sender"]
    password = email_info["password"]
    # 发送人
    sender = email_info["sender"]
    # 一个收件人
    # recipient = email_info["to_mail"]
    # 多个收件人
    recipients = email_info["to_mail"]

    # 抄送人
    # cc_mail = email_info["cc_mail"]
    # 发送主题
    subject = email_info["subject"]
    subject = Header(subject, 'utf-8').encode()

    # 构造邮件对象MIMEMultipart对象
    # 下面的主题,发件人,收件人日期显示在邮件页面上
    em = MIMEMultipart()
    em["subject"] = subject
    em["From"] = sender
    em["To"] = recipients
    # # em["Cc"] = cc_mail
    # # em["Date"] = '2022-4-3'

    # 构造文字内容
    text = "python 自动化接口测试报告"  # 正文内容
    text_plain = MIMEText(text, 'plain', 'utf-8')
    em.attach(text_plain)

    # 构造图片链接
    send_img_file = open(r'D:\pythonProject\img\OIP-C.jpg', 'rb').read()
    image = MIMEImage(send_img_file)
    image.add_header('Content-ID', '<image1>')
    image["Content-Disposition"] = "attachment;filename='OIP-C.jpg'"
    em.attach(image)

    # 构造html
    # 发送正文中的图片:由于包含未被许可的信息,网易邮箱定义为垃圾邮件,
    # 报554 DT:SPM :<p><img src="cid:image1"></p>
    # html = """
    # <html>
    #     <head></head>
    #     <body>
    #         <p>Hi!<br>
    #             How are you?<br>
    #             Here is the <a href="https://www.cnblogs.com/du-hong/">link 自动化接口测试报告</a> you wanted.<br>
    #         </p>
    #     </body>
    # </html>
    # """
    # text_html = MIMEText(html, 'html', 'utf-8')
    # text_html["Content-Disposition"] = "attachment;filename='texthtml.html'"
    # em.attach(text_html)

    # 构造附件
    send_file = open(r'D:\pythonProject\test_api\report\report.html', 'rb').read()
    text_att = MIMEText(send_file, 'base64', 'utf-8')
    text_att["Content-Type"] = "application/octet-stream"
    text_att.add_header('Content-Disposition', 'attachment', filename='report.html')
    em.attach(text_att)

    # 连接服务器 发送邮件
    try:
        smtp = smtplib.SMTP()
        smtp.connect(smtp_server)
        # smtp.set_debuglevel(1)  # 可以打印出和SMTP服务器交互的所有信息。
        smtp.login(username, password)
        smtp.sendmail(sender, recipients, em.as_string())
        file_and_console('邮件发送成功')
    except Exception as e:
        file_and_console(f'邮件发送失败{e}')
    finally:
        smtp.quit()

 

posted @ 2022-04-03 16:39  书院小先生  阅读(116)  评论(0编辑  收藏  举报