Web M&M
https://mam.matfyz.cz
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
35 lines
1.3 KiB
35 lines
1.3 KiB
"""A simple email backend, which only prepends all subjects with a string.
|
|
|
|
Used to distinguish testing emails from production ones."""
|
|
|
|
# We try to monkeypatch django.core.mail.backends.smtp :-)
|
|
|
|
from django.core.mail.backends.smtp import EmailBackend as DjangoSMTPBackend
|
|
from django.conf import settings
|
|
|
|
def omezovatko_poctu_mailu(maily:list, maximum:int) -> str:
|
|
if len(maily) <= maximum: return str(maily)
|
|
# Aspoň zhruba simulujeme tisk pole…
|
|
return '[' + ", ".join(f"'{mail}'" for mail in maily[:maximum - 1]) + f', … ({len(maily)} e-mailů) ]'
|
|
|
|
class PrefixingMailBackend(DjangoSMTPBackend):
|
|
# method _send is not probably meant to be monkey_patched, so we patch send_messages instead.
|
|
def send_messages(self, messages):
|
|
prefix = '[Mail z testwebu]'
|
|
for message in messages:
|
|
# We hope that this is a django.core.mail.message.EmailMessage
|
|
|
|
if message.from_email != settings.SERVER_EMAIL:
|
|
message.subject = prefix + ' ' + message.subject
|
|
to = omezovatko_poctu_mailu(message.to, 3)
|
|
cc = omezovatko_poctu_mailu(message.cc, 3)
|
|
bcc = omezovatko_poctu_mailu(message.bcc, 3)
|
|
message.body = f"""Bylo by posláno na e-maily:
|
|
To: {to}
|
|
Cc: {cc}
|
|
Bcc: {bcc}
|
|
"""+ "\n\n" + message.body
|
|
message.to = settings.TESTOVACI_EMAILOVA_KONFERENCE
|
|
message.cc = []
|
|
message.bcc = []
|
|
return super().send_messages(messages)
|
|
|