From 69670229bd6f0315e8a1a2a762256957619a8c74 Mon Sep 17 00:00:00 2001 From: 0xD0M1M0 <76812428+0xD0M1M0@users.noreply.github.com> Date: Wed, 4 Dec 2024 23:37:52 +0100 Subject: [PATCH] fix: IMAP E-Mail Sent Folder Customization Fixes https://github.com/frappe/frappe/issues/28630 --- .../email/doctype/email_account/email_account.json | 10 +++++++++- frappe/email/doctype/email_account/email_account.py | 8 ++++---- frappe/email/doctype/email_domain/email_domain.json | 13 +++++++++++-- frappe/email/doctype/email_domain/email_domain.py | 1 + 4 files changed, 25 insertions(+), 7 deletions(-) diff --git a/frappe/email/doctype/email_account/email_account.json b/frappe/email/doctype/email_account/email_account.json index 274f37f81d..1a44bec920 100644 --- a/frappe/email/doctype/email_account/email_account.json +++ b/frappe/email/doctype/email_account/email_account.json @@ -51,6 +51,7 @@ "imap_folder", "section_break_12", "append_emails_to_sent_folder", + "sent_folder_name", "append_to", "create_contact", "enable_automatic_linking", @@ -691,12 +692,19 @@ "fieldname": "backend_app_flow", "fieldtype": "Check", "label": "Authenticate as Service Principal" + }, + { + "depends_on": "eval:!doc.domain && doc.enable_outgoing && doc.enable_incoming && doc.use_imap", + "fetch_from": "domain.sent_folder_name", + "fieldname": "sent_folder_name", + "fieldtype": "Data", + "label": "Sent Folder Name" } ], "icon": "fa fa-inbox", "index_web_pages_for_search": 1, "links": [], - "modified": "2024-11-11 10:12:06.667888", + "modified": "2024-12-04 23:30:37.622353", "modified_by": "Administrator", "module": "Email", "name": "Email Account", diff --git a/frappe/email/doctype/email_account/email_account.py b/frappe/email/doctype/email_account/email_account.py index 7882f25551..8a34c22122 100755 --- a/frappe/email/doctype/email_account/email_account.py +++ b/frappe/email/doctype/email_account/email_account.py @@ -101,9 +101,8 @@ class EmailAccount(Document): password: DF.Password | None send_notification_to: DF.SmallText | None send_unsubscribe_message: DF.Check - service: DF.Literal[ - "", "Frappe Mail", "GMail", "Sendgrid", "SparkPost", "Yahoo Mail", "Outlook.com", "Yandex.Mail" - ] + sent_folder_name: DF.Data | None + service: DF.Literal["", "Frappe Mail", "GMail", "Sendgrid", "SparkPost", "Yahoo Mail", "Outlook.com", "Yandex.Mail"] signature: DF.TextEditor | None smtp_port: DF.Data | None smtp_server: DF.Data | None @@ -774,7 +773,8 @@ class EmailAccount(Document): try: email_server = self.get_incoming_server(in_receive=True) message = safe_encode(message) - email_server.imap.append("Sent", "\\Seen", imaplib.Time2Internaldate(time.time()), message) + sent_folder_name = "Sent" if self.sent_folder_name == "" else self.sent_folder_name + email_server.imap.append(sent_folder_name, "\\Seen", imaplib.Time2Internaldate(time.time()), message) except Exception: self.log_error("Unable to add to Sent folder") diff --git a/frappe/email/doctype/email_domain/email_domain.json b/frappe/email/doctype/email_domain/email_domain.json index 3940635f08..192a4e454f 100644 --- a/frappe/email/doctype/email_domain/email_domain.json +++ b/frappe/email/doctype/email_domain/email_domain.json @@ -24,7 +24,8 @@ "validate_ssl_certificate_for_outgoing", "column_break_18", "smtp_port", - "append_emails_to_sent_folder" + "append_emails_to_sent_folder", + "sent_folder_name" ], "fields": [ { @@ -141,6 +142,14 @@ "fieldname": "validate_ssl_certificate_for_outgoing", "fieldtype": "Check", "label": "Validate SSL Certificate" + }, + { + "default": "Sent", + "depends_on": "eval: doc.append_emails_to_sent_folder", + "description": "Some mailboxes require a different Sent Folder Name e.g. \"INBOX.Sent\"", + "fieldname": "sent_folder_name", + "fieldtype": "Data", + "label": "Sent Folder Name" } ], "icon": "icon-inbox", @@ -150,7 +159,7 @@ "link_fieldname": "domain" } ], - "modified": "2024-03-23 16:03:23.836849", + "modified": "2024-12-04 23:26:20.993971", "modified_by": "Administrator", "module": "Email", "name": "Email Domain", diff --git a/frappe/email/doctype/email_domain/email_domain.py b/frappe/email/doctype/email_domain/email_domain.py index 48e73a08dc..adb0597c3e 100644 --- a/frappe/email/doctype/email_domain/email_domain.py +++ b/frappe/email/doctype/email_domain/email_domain.py @@ -66,6 +66,7 @@ class EmailDomain(Document): domain_name: DF.Data email_server: DF.Data incoming_port: DF.Data | None + sent_folder_name: DF.Data | None smtp_port: DF.Data | None smtp_server: DF.Data use_imap: DF.Check