Compare commits

...

2 commits

Author SHA1 Message Date
jedi 67c9496413 stash 2024-05-04 00:43:40 +02:00
jedi 1cacbc8c91 stash 2024-05-04 00:37:41 +02:00
2 changed files with 8 additions and 2 deletions

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)

View file

@ -43,7 +43,8 @@ class NotificationDispatcher:
@database_sync_to_async
def get_ticket(self, ticket_id):
return IssueThread.objects.get(id=ticket_id).prefetch_related('event')
return IssueThread.objects.filter(id=ticket_id).select_related('event').prefetch_related('state_changes',
'assignments').first()
async def run_forever(self):
# Infinite loop to continuously listen for messages