Compare commits
2 commits
69046208fb
...
67c9496413
Author | SHA1 | Date | |
---|---|---|---|
67c9496413 | |||
1cacbc8c91 |
|
@ -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)
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in a new issue