Merge pull request #24656 from ankush/retry_contact
fix: outgoing email account handlng
This commit is contained in:
commit
bedf5ba65e
1 changed files with 10 additions and 7 deletions
|
|
@ -131,12 +131,12 @@ class EmailQueue(Document):
|
|||
def attachments_list(self):
|
||||
return json.loads(self.attachments) if self.attachments else []
|
||||
|
||||
def get_email_account(self):
|
||||
def get_email_account(self, raise_error=False):
|
||||
if self.email_account:
|
||||
return frappe.get_cached_doc("Email Account", self.email_account)
|
||||
|
||||
return EmailAccount.find_outgoing(
|
||||
match_by_email=self.sender, match_by_doctype=self.reference_doctype
|
||||
match_by_email=self.sender, match_by_doctype=self.reference_doctype, _raise_error=raise_error
|
||||
)
|
||||
|
||||
def is_to_be_sent(self):
|
||||
|
|
@ -158,6 +158,7 @@ class EmailQueue(Document):
|
|||
return
|
||||
|
||||
with SendMailContext(self, smtp_server_instance) as ctx:
|
||||
ctx.fetch_smtp_server()
|
||||
message = None
|
||||
for recipient in self.recipients:
|
||||
if recipient.is_mail_sent():
|
||||
|
|
@ -233,14 +234,16 @@ class SendMailContext:
|
|||
smtp_server_instance: SMTPServer = None,
|
||||
):
|
||||
self.queue_doc: EmailQueue = queue_doc
|
||||
self.email_account_doc = queue_doc.get_email_account()
|
||||
|
||||
self.smtp_server: SMTPServer = smtp_server_instance or self.email_account_doc.get_smtp_server()
|
||||
|
||||
self.smtp_server: SMTPServer = smtp_server_instance
|
||||
self.sent_to_atleast_one_recipient = any(
|
||||
rec.recipient for rec in self.queue_doc.recipients if rec.is_mail_sent()
|
||||
)
|
||||
|
||||
def fetch_smtp_server(self):
|
||||
self.email_account_doc = self.queue_doc.get_email_account(raise_error=True)
|
||||
if not self.smtp_server:
|
||||
self.smtp_server = self.email_account_doc.get_smtp_server()
|
||||
|
||||
def __enter__(self):
|
||||
self.queue_doc.update_status(status="Sending", commit=True)
|
||||
return self
|
||||
|
|
@ -733,7 +736,7 @@ class QueueBuilder:
|
|||
recipients = list(set([r] + self.final_cc() + self.bcc))
|
||||
q = EmailQueue.new({**queue_data, **{"recipients": recipients}}, ignore_permissions=True)
|
||||
if not smtp_server_instance:
|
||||
email_account = q.get_email_account()
|
||||
email_account = q.get_email_account(raise_error=True)
|
||||
smtp_server_instance = email_account.get_smtp_server()
|
||||
|
||||
with suppress(Exception):
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue