瀏覽代碼

Merge pull request #17911 from frappe/mergify/bp/version-14-hotfix/pr-17883

fix: fetch email domain values for email account (backport #17883)
version-14
Ritwik Puri 2 年之前
committed by GitHub
父節點
當前提交
5e4fd0090f
沒有發現已知的金鑰在資料庫的簽署中 GPG Key ID: 4AEE18F83AFDEB23
共有 4 個文件被更改,包括 39 次插入73 次删除
  1. +17
    -36
      frappe/email/doctype/email_account/email_account.js
  2. +4
    -4
      frappe/email/doctype/email_account/email_account.json
  3. +3
    -20
      frappe/email/doctype/email_account/email_account.py
  4. +15
    -13
      frappe/email/doctype/email_domain/email_domain.py

+ 17
- 36
frappe/email/doctype/email_account/email_account.js 查看文件

@@ -158,7 +158,6 @@ frappe.ui.form.on("Email Account", {
},

refresh: function (frm) {
frm.events.set_domain_fields(frm);
frm.events.enable_incoming(frm);
frm.events.notify_if_unreplied(frm);
frm.events.show_gmail_message_for_less_secure_apps(frm);
@@ -211,42 +210,24 @@ frappe.ui.form.on("Email Account", {
oauth_access(frm);
},

email_id: function (frm) {
//pull domain and if no matching domain go create one
frm.events.update_domain(frm);
},

update_domain: function (frm) {
if (!frm.doc.email_id && !frm.doc.service) {
return;
}

frappe.call({
method: "get_domain",
doc: frm.doc,
args: {
email_id: frm.doc.email_id,
},
callback: function (r) {
if (r.message) {
frm.events.set_domain_fields(frm, r.message);
}
},
});
},

set_domain_fields: function (frm, args) {
if (!args) {
args = frappe.route_flags.set_domain_values ? frappe.route_options : {};
}

for (var field in args) {
frm.set_value(field, args[field]);
domain: frappe.utils.debounce((frm) => {
if (frm.doc.domain) {
frappe.call({
method: "get_domain_values",
doc: frm.doc,
args: {
domain: frm.doc.domain,
},
callback: function (r) {
if (!r.exc) {
for (let field in r.message) {
frm.set_value(field, r.message[field]);
}
}
},
});
}

delete frappe.route_flags.set_domain_values;
frappe.route_options = {};
},
}),

email_sync_option: function (frm) {
// confirm if the ALL sync option is selected


+ 4
- 4
frappe/email/doctype/email_account/email_account.json 查看文件

@@ -145,7 +145,7 @@
"hide_seconds": 1,
"in_list_view": 1,
"in_standard_filter": 1,
"label": "Domain (optional)",
"label": "Domain",
"options": "Email Domain"
},
{
@@ -154,7 +154,7 @@
"fieldtype": "Select",
"hide_days": 1,
"hide_seconds": 1,
"label": "Service (optional)",
"label": "Service",
"options": "\nGMail\nSendgrid\nSparkPost\nYahoo Mail\nOutlook.com\nYandex.Mail"
},
{
@@ -615,7 +615,7 @@
"icon": "fa fa-inbox",
"index_web_pages_for_search": 1,
"links": [],
"modified": "2022-08-16 13:05:45.445572",
"modified": "2022-08-23 00:31:05.305462",
"modified_by": "Administrator",
"module": "Email",
"name": "Email Account",
@@ -639,4 +639,4 @@
"sort_order": "DESC",
"states": [],
"track_changes": 1
}
}

+ 3
- 20
frappe/email/doctype/email_account/email_account.py 查看文件

@@ -12,6 +12,7 @@ from poplib import error_proto
import frappe
from frappe import _, are_emails_muted, safe_encode
from frappe.desk.form import assign_to
from frappe.email.doctype.email_domain.email_domain import EMAIL_DOMAIN_FIELDS
from frappe.email.receive import EmailServer, InboundMail, SentEmailInInboxError
from frappe.email.smtp import SMTPServer
from frappe.email.utils import get_port
@@ -179,26 +180,8 @@ class EmailAccount(Document):
email_account.save()

@frappe.whitelist()
def get_domain(self, email_id):
"""look-up the domain and then full"""
try:
domain = email_id.split("@")
fields = [
"name as domain",
"use_imap",
"email_server",
"use_ssl",
"use_starttls",
"smtp_server",
"use_tls",
"smtp_port",
"incoming_port",
"append_emails_to_sent_folder",
"use_ssl_for_outgoing",
]
return frappe.db.get_value("Email Domain", domain[1], fields, as_dict=True)
except Exception:
pass
def get_domain_values(self, domain: str):
return frappe.db.get_value("Email Domain", domain, EMAIL_DOMAIN_FIELDS, as_dict=True)

def get_incoming_server(self, in_receive=False, email_sync_rule="UNSEEN"):
"""Returns logged in POP3/IMAP connection object."""


+ 15
- 13
frappe/email/doctype/email_domain/email_domain.py 查看文件

@@ -11,6 +11,20 @@ from frappe.email.utils import get_port
from frappe.model.document import Document
from frappe.utils import cint

EMAIL_DOMAIN_FIELDS = [
"email_server",
"use_imap",
"use_ssl",
"use_starttls",
"use_tls",
"attachment_limit",
"smtp_server",
"smtp_port",
"use_ssl_for_outgoing",
"append_emails_to_sent_folder",
"incoming_port",
]


def get_error_message(event):
return {
@@ -52,19 +66,7 @@ class EmailDomain(Document):
for email_account in frappe.get_all("Email Account", filters={"domain": self.name}):
try:
email_account = frappe.get_doc("Email Account", email_account.name)
for attr in [
"email_server",
"use_imap",
"use_ssl",
"use_starttls",
"use_tls",
"attachment_limit",
"smtp_server",
"smtp_port",
"use_ssl_for_outgoing",
"append_emails_to_sent_folder",
"incoming_port",
]:
for attr in EMAIL_DOMAIN_FIELDS:
email_account.set(attr, self.get(attr, default=0))
email_account.save()



Loading…
取消
儲存