email sending tweaks: (#470)
- support 'reply-to' email field in values, and in ansible-based values - set 'subject' for different types of messages
This commit is contained in:
parent
a916322c30
commit
4dbca8c421
@ -70,5 +70,6 @@ email:
|
||||
smtp_host: {{ smtp_host }}
|
||||
sender_email: {{ sender_email }}
|
||||
password: {{ sender_password }}
|
||||
reply_to_email: {{ reply_to_email }}
|
||||
|
||||
|
||||
|
@ -36,6 +36,7 @@ cert_email: "{{ superuser_email }}"
|
||||
smtp_port: ""
|
||||
smtp_host: ""
|
||||
sender_email: ""
|
||||
reply_to_email: ""
|
||||
sender_password: ""
|
||||
|
||||
|
||||
|
@ -4,6 +4,7 @@ import os
|
||||
import smtplib
|
||||
import ssl
|
||||
|
||||
from email.message import EmailMessage
|
||||
|
||||
# pylint: disable=too-few-public-methods
|
||||
class EmailSender:
|
||||
@ -12,11 +13,12 @@ class EmailSender:
|
||||
def __init__(self):
|
||||
self.sender = os.environ.get("EMAIL_SENDER")
|
||||
self.password = os.environ.get("EMAIL_PASSWORD")
|
||||
self.reply_to = os.environ.get("EMAIL_REPLY_TO") or self.sender
|
||||
self.smtp_server = os.environ.get("EMAIL_SMTP_HOST")
|
||||
|
||||
self.default_origin = os.environ.get("APP_ORIGIN")
|
||||
|
||||
def _send_encrypted(self, receiver, message):
|
||||
def _send_encrypted(self, receiver, subject, message):
|
||||
"""Send Encrypted SMTP Message"""
|
||||
print(message, flush=True)
|
||||
|
||||
@ -24,13 +26,21 @@ class EmailSender:
|
||||
print("Email: No SMTP Server, not sending", flush=True)
|
||||
return
|
||||
|
||||
msg = EmailMessage()
|
||||
msg["Subject"] = subject
|
||||
msg["From"] = self.reply_to
|
||||
msg["To"] = receiver
|
||||
msg["Reply-To"] = msg["From"]
|
||||
msg.set_content(message)
|
||||
|
||||
context = ssl.create_default_context()
|
||||
with smtplib.SMTP(self.smtp_server, 587) as server:
|
||||
server.ehlo() # Can be omitted
|
||||
server.starttls(context=context)
|
||||
server.ehlo() # Can be omitted
|
||||
server.login(self.sender, self.password)
|
||||
server.sendmail(self.sender, receiver, message)
|
||||
server.send_message(msg)
|
||||
# server.sendmail(self.sender, receiver, message)
|
||||
|
||||
def get_origin(self, headers):
|
||||
"""Return origin of the received request"""
|
||||
@ -56,7 +66,11 @@ You can verify by clicking here: {origin}/verify?token={token}
|
||||
|
||||
The verification token is: {token}"""
|
||||
|
||||
self._send_encrypted(receiver_email, message)
|
||||
self._send_encrypted(
|
||||
receiver_email,
|
||||
"Welcome to Browsertrix Cloud, Verify your Registration",
|
||||
message,
|
||||
)
|
||||
|
||||
# pylint: disable=too-many-arguments
|
||||
def send_new_user_invite(
|
||||
@ -73,7 +87,11 @@ You can join by clicking here: {origin}/join/{token}?email={receiver_email}
|
||||
|
||||
The invite token is: {token}"""
|
||||
|
||||
self._send_encrypted(receiver_email, message)
|
||||
self._send_encrypted(
|
||||
receiver_email,
|
||||
f'You\'ve been invited to join "{archive_name}" on Browsertrix Cloud',
|
||||
message,
|
||||
)
|
||||
|
||||
# pylint: disable=too-many-arguments
|
||||
def send_existing_user_invite(
|
||||
@ -89,7 +107,11 @@ You can join by clicking here: {origin}/invite/accept/{token}?email={receiver_em
|
||||
|
||||
The invite token is: {token}"""
|
||||
|
||||
self._send_encrypted(receiver_email, message)
|
||||
self._send_encrypted(
|
||||
receiver_email,
|
||||
f'You\'ve been invited to join "{archive_name}" on Browsertrix Cloud',
|
||||
message,
|
||||
)
|
||||
|
||||
def send_user_forgot_password(self, receiver_email, token, headers=None):
|
||||
"""Send password reset email with token"""
|
||||
@ -100,4 +122,4 @@ We received your password reset request. Please click here: {origin}/reset-passw
|
||||
to create a new password
|
||||
"""
|
||||
|
||||
self._send_encrypted(receiver_email, message)
|
||||
self._send_encrypted(receiver_email, "Password Reset", message)
|
||||
|
@ -21,6 +21,7 @@ stringData:
|
||||
EMAIL_SMTP_PORT: "{{ .Values.email.smtp_port }}"
|
||||
EMAIL_SMTP_HOST: "{{ .Values.email.smtp_host }}"
|
||||
EMAIL_SENDER: "{{ .Values.email.sender_email }}"
|
||||
EMAIL_REPLY_TO: "{{ .Values.email.reply_to }}"
|
||||
EMAIL_PASSWORD: "{{ .Values.email.password }}"
|
||||
|
||||
SUPERUSER_EMAIL: "{{ .Values.superuser.email }}"
|
||||
|
@ -191,6 +191,7 @@ email:
|
||||
smtp_port: 587
|
||||
sender_email: example@example.com
|
||||
password: password
|
||||
reply_to_email: example@example.com
|
||||
|
||||
|
||||
# Deployment options
|
||||
|
Loading…
Reference in New Issue
Block a user