From 1bd980d75291e94b9b76dbadec1289482b8ea2ab Mon Sep 17 00:00:00 2001 From: Marcin Kuzminski Date: Mon, 16 Jul 2018 18:24:46 +0200 Subject: [PATCH] emails: ensure none empty emails are fetched from admin accounts in recipinets aren't specified. - in some cases we could create LDAP or other external accounts with empty email. That could crash the mailing lib. --- rhodecode/lib/celerylib/tasks.py | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/rhodecode/lib/celerylib/tasks.py b/rhodecode/lib/celerylib/tasks.py index bfb4c62d..f86cb006 100644 --- a/rhodecode/lib/celerylib/tasks.py +++ b/rhodecode/lib/celerylib/tasks.py @@ -32,7 +32,7 @@ from rhodecode.lib.celerylib import get_logger, async_task, RequestContextTask from rhodecode.lib.hooks_base import log_create_repository from rhodecode.lib.rcmail.smtp_mailer import SmtpMailer from rhodecode.lib.utils2 import safe_int, str2bool -from rhodecode.model.db import Session, IntegrityError, Repository, User +from rhodecode.model.db import Session, IntegrityError, Repository, User, true @async_task(ignore_result=True, base=RequestContextTask) @@ -52,9 +52,15 @@ def send_email(recipients, subject, body='', html_body='', email_config=None): subject = "%s %s" % (email_config.get('email_prefix', ''), subject) if not recipients: # if recipients are not defined we send to email_config + all admins - admins = [ - u.email for u in User.query().filter(User.admin == True).all()] - recipients = [email_config.get('email_to')] + admins + admins = [] + for u in User.query().filter(User.admin == true()).all(): + if u.email: + admins.append(u.email) + recipients = [] + config_email = email_config.get('email_to') + if config_email: + recipients += [config_email] + recipients += admins mail_server = email_config.get('smtp_server') or None if mail_server is None: