# -*- coding: utf-8 -*-
|
"""
|
@File : email_helper.py
|
@Time : 2023/9/8 11:05
|
@Author : geekbing
|
@LastEditTime : -
|
@LastEditors : -
|
@Description : 邮件发送
|
"""
|
import logging
|
from typing import Dict, Union
|
|
from django.core.mail import EmailMessage
|
|
from lunarlink.utils.message_template import parse_message, email_msg_template
|
|
logger = logging.getLogger(__name__)
|
|
|
def send_mail_with_cc(
|
subject: str,
|
html_message: str,
|
recipient_list: list[str],
|
cc_list: list[str] = None,
|
) -> bool:
|
"""
|
发送带有抄送人的HTML邮件
|
|
:param subject: 邮件主题
|
:param html_message: HTML格式的邮件内容
|
:param recipient_list: 收件人邮箱列表
|
:param cc_list: 抄送人邮箱列表
|
:return: 发送邮件成功返回True,失败返回False
|
"""
|
email = EmailMessage(
|
subject=subject,
|
body=html_message,
|
to=recipient_list,
|
cc=cc_list,
|
)
|
email.content_subtype = "html"
|
return email.send()
|
|
|
def send(summary: Union[Dict, str], email_recipient: str, email_cc: str, **kwargs):
|
"""
|
发送邮件
|
|
:param summary: 报告摘要
|
:param email_recipient: 邮件接收人
|
:param email_cc: 邮件抄送人
|
:param kwargs:
|
:return:
|
"""
|
recipient_list = email_recipient.split(";")
|
ccr_list = email_cc.split(";")
|
parsed_data = parse_message(summary=summary, **kwargs)
|
message = email_msg_template(**parsed_data)
|
is_send = send_mail_with_cc(
|
recipient_list=recipient_list,
|
cc_list=ccr_list,
|
**message,
|
)
|
if is_send:
|
logger.info(f"邮件发送成功, 收件人:{email_recipient},抄送人:{email_cc}")
|
else:
|
logger.error(f"邮件发送失败, 收件人:{email_recipient},抄送人:{email_cc}")
|