This commit is contained in:
j3d1 2024-05-04 00:37:41 +02:00
parent 69046208fb
commit 1cacbc8c91

View file

@ -188,6 +188,7 @@ def parse_email_body(raw, log=None):
return parsed, body, attachments
@database_sync_to_async
def receive_email(envelope, log=None):
parsed, body, attachments = parse_email_body(envelope.content, log)
@ -204,6 +205,10 @@ def receive_email(envelope, log=None):
# log.warning("Header to does not match envelope to")
# log.info(f"Header to: {header_to}, envelope to: {envelope.rcpt_tos[0]}")
if Email.objects.filter(reference=header_message_id).exists(): # break before issue thread is created
log.warning("Email already exists")
raise Exception("Email already exists")
recipient = envelope.rcpt_tos[0].lower() if envelope.rcpt_tos else header_to.lower()
sender = envelope.mail_from if envelope.mail_from else header_from
subject = parsed.get('Subject')
@ -262,7 +267,7 @@ class LMTPHandler:
content = None
try:
content = envelope.content
email, new, reply, thread = await database_sync_to_async(receive_email)(envelope, log)
email, new, reply, thread = await receive_email(envelope, log)
log.info(f"Created email {email.id}")
systemevent = await database_sync_to_async(SystemEvent.objects.create)(type='email received',
reference=email.id)