send_email accepts bounced_email (optional) param
This commit is contained in:
parent
74d1f87db0
commit
85eca009ac
|
@ -1,7 +1,13 @@
|
||||||
|
import email
|
||||||
import os
|
import os
|
||||||
from email.message import EmailMessage, Message
|
from email.message import EmailMessage, Message
|
||||||
|
from email.mime.application import MIMEApplication
|
||||||
|
from email.mime.base import MIMEBase
|
||||||
|
from email.mime.multipart import MIMEMultipart
|
||||||
|
from email.mime.text import MIMEText
|
||||||
from email.utils import make_msgid, formatdate
|
from email.utils import make_msgid, formatdate
|
||||||
from smtplib import SMTP
|
from smtplib import SMTP
|
||||||
|
from typing import Optional
|
||||||
|
|
||||||
import dkim
|
import dkim
|
||||||
from jinja2 import Environment, FileSystemLoader
|
from jinja2 import Environment, FileSystemLoader
|
||||||
|
@ -167,7 +173,9 @@ def send_cannot_create_domain_alias(user, alias, domain):
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
def send_email(to_email, subject, plaintext, html):
|
def send_email(
|
||||||
|
to_email, subject, plaintext, html, bounced_email: Optional[Message] = None
|
||||||
|
):
|
||||||
if NOT_SEND_EMAIL:
|
if NOT_SEND_EMAIL:
|
||||||
LOG.d(
|
LOG.d(
|
||||||
"send email with subject %s to %s, plaintext: %s",
|
"send email with subject %s to %s, plaintext: %s",
|
||||||
|
@ -179,16 +187,32 @@ def send_email(to_email, subject, plaintext, html):
|
||||||
|
|
||||||
# host IP, setup via Docker network
|
# host IP, setup via Docker network
|
||||||
smtp = SMTP(POSTFIX_SERVER, 25)
|
smtp = SMTP(POSTFIX_SERVER, 25)
|
||||||
msg = EmailMessage()
|
|
||||||
|
if bounced_email:
|
||||||
|
msg = MIMEMultipart("mixed")
|
||||||
|
|
||||||
|
# add email main body
|
||||||
|
body = MIMEMultipart("alternative")
|
||||||
|
body.attach(MIMEText(plaintext, "text"))
|
||||||
|
if html:
|
||||||
|
body.attach(MIMEText(html, "html"))
|
||||||
|
|
||||||
|
msg.attach(body)
|
||||||
|
|
||||||
|
# add attachment
|
||||||
|
rfcmessage = MIMEBase("message", "rfc822")
|
||||||
|
rfcmessage.attach(bounced_email)
|
||||||
|
msg.attach(rfcmessage)
|
||||||
|
else:
|
||||||
|
msg = MIMEMultipart("alternative")
|
||||||
|
msg.attach(MIMEText(plaintext, "text"))
|
||||||
|
if html:
|
||||||
|
msg.attach(MIMEText(html, "html"))
|
||||||
|
|
||||||
msg["Subject"] = subject
|
msg["Subject"] = subject
|
||||||
msg["From"] = f"{SUPPORT_NAME} <{SUPPORT_EMAIL}>"
|
msg["From"] = f"{SUPPORT_NAME} <{SUPPORT_EMAIL}>"
|
||||||
msg["To"] = to_email
|
msg["To"] = to_email
|
||||||
|
|
||||||
msg.set_content(plaintext)
|
|
||||||
if html:
|
|
||||||
msg.add_alternative(html, subtype="html")
|
|
||||||
|
|
||||||
msg_id_header = make_msgid()
|
msg_id_header = make_msgid()
|
||||||
LOG.d("message-id %s", msg_id_header)
|
LOG.d("message-id %s", msg_id_header)
|
||||||
msg["Message-ID"] = msg_id_header
|
msg["Message-ID"] = msg_id_header
|
||||||
|
|
Loading…
Reference in a new issue