From f8269e3ad652eb4aa8196af60e7cbc0292e5aa7c Mon Sep 17 00:00:00 2001 From: Ameya Shenoy Date: Thu, 5 Jul 2018 16:13:13 +0530 Subject: [PATCH 1/3] [fix]email error due to incorrect smtp server auth - A dict of smtpserver objects is created for every sender - A smtp server object is created if not present for the given sender - smtpserver object is picked based on the sender of the mail --- frappe/email/queue.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/frappe/email/queue.py b/frappe/email/queue.py index f810c6abcf..5a288b1bd0 100755 --- a/frappe/email/queue.py +++ b/frappe/email/queue.py @@ -340,10 +340,10 @@ def flush(from_test=False): msgprint(_("Emails are muted")) from_test = True - smtpserver = SMTPServer() - make_cache_queue() + smtpserver_dict = frappe._dict() + for i in range(cache.llen('cache_email_queue')): email = cache.lpop('cache_email_queue') @@ -351,6 +351,12 @@ def flush(from_test=False): break if email: + sender = frappe.db.get_value("Email Queue", email, "sender") + smtpserver = smtpserver_dict.get(sender) + if not smtpserver: + smtpserver = SMTPServer() + smtpserver_dict[sender] = smtpserver + send_one(email, smtpserver, auto_commit, from_test=from_test) # NOTE: removing commit here because we pass auto_commit From 7a532a4f214fc3da2082a43f65ed393a81383a23 Mon Sep 17 00:00:00 2001 From: Rushabh Mehta Date: Fri, 6 Jul 2018 17:58:53 +0530 Subject: [PATCH 2/3] [fix] remove cache from queue.py --- frappe/email/queue.py | 31 +++++++++---------------------- 1 file changed, 9 insertions(+), 22 deletions(-) diff --git a/frappe/email/queue.py b/frappe/email/queue.py index 5a288b1bd0..f06bfa69eb 100755 --- a/frappe/email/queue.py +++ b/frappe/email/queue.py @@ -2,7 +2,6 @@ # MIT License. See license.txt from __future__ import unicode_literals -from six.moves import range import frappe from six.moves import html_parser as HTMLParser import smtplib, quopri, json @@ -332,7 +331,6 @@ def return_unsubscribed_page(email, doctype, name): def flush(from_test=False): """flush email queue, every time: called from scheduler""" # additional check - cache = frappe.cache() check_email_limit([]) auto_commit = not from_test @@ -340,34 +338,27 @@ def flush(from_test=False): msgprint(_("Emails are muted")) from_test = True - make_cache_queue() - smtpserver_dict = frappe._dict() - for i in range(cache.llen('cache_email_queue')): - email = cache.lpop('cache_email_queue') + for email in get_queue(): if cint(frappe.defaults.get_defaults().get("hold_queue"))==1: break - if email: - sender = frappe.db.get_value("Email Queue", email, "sender") - smtpserver = smtpserver_dict.get(sender) + if email.name: + smtpserver = smtpserver_dict.get(email.sender) if not smtpserver: smtpserver = SMTPServer() - smtpserver_dict[sender] = smtpserver + smtpserver_dict[email.sender] = smtpserver - send_one(email, smtpserver, auto_commit, from_test=from_test) + send_one(email.name, smtpserver, auto_commit, from_test=from_test) # NOTE: removing commit here because we pass auto_commit # finally: # frappe.db.commit() -def make_cache_queue(): - '''cache values in queue before sendign''' - cache = frappe.cache() - - emails = frappe.db.sql('''select - name +def get_queue(): + return frappe.db.sql('''select + name, sender from `tabEmail Queue` where @@ -375,12 +366,8 @@ def make_cache_queue(): (send_after is null or send_after < %(now)s) order by priority desc, creation asc - limit 500''', { 'now': now_datetime() }) + limit 500''', { 'now': now_datetime() }, as_dict=True) - # reset value - cache.delete_value('cache_email_queue') - for e in emails: - cache.rpush('cache_email_queue', e[0]) def send_one(email, smtpserver=None, auto_commit=True, now=False, from_test=False): '''Send Email Queue with given smtpserver''' From ecd881628f108c12cc80a3787ad2403159ff9059 Mon Sep 17 00:00:00 2001 From: Ameya Shenoy Date: Wed, 1 Aug 2018 06:22:44 +0000 Subject: [PATCH 3/3] bumped to version 10.1.44 --- frappe/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frappe/__init__.py b/frappe/__init__.py index af64977665..3109ba042c 100644 --- a/frappe/__init__.py +++ b/frappe/__init__.py @@ -14,7 +14,7 @@ import os, sys, importlib, inspect, json from .exceptions import * from .utils.jinja import get_jenv, get_template, render_template, get_email_from_template -__version__ = '10.1.43' +__version__ = '10.1.44' __title__ = "Frappe Framework" local = Local()