[hotfix] check daily email limit before sending emails

This commit is contained in:
mbauskar 2017-08-16 16:15:26 +05:30
parent 49ba5828fc
commit ce8f76ff4a

View file

@ -218,9 +218,17 @@ def check_email_limit(recipients):
or frappe.flags.in_test):
monthly_email_limit = frappe.conf.get('limits', {}).get('emails')
daily_email_limit = frappe.conf.get('limits', {}).get('daily_emails')
if frappe.flags.in_test:
monthly_email_limit = 500
daily_email_limit = 50
# get count of today's sent mails
today = get_emails_sent_today()
if daily_email_limit and (today + len(recipients)) > daily_email_limit:
throw(_("Cannot send this email. You have crossed the sending limit of {0} emails for this day.").format(daily_email_limit),
EmailLimitCrossedError)
if not monthly_email_limit:
return
@ -236,6 +244,10 @@ def get_emails_sent_this_month():
return frappe.db.sql("""select count(name) from `tabEmail Queue` where
status='Sent' and MONTH(creation)=MONTH(CURDATE())""")[0][0]
def get_emails_sent_today():
return frappe.db.sql("""select count(name) from `tabEmail Queue` where
status='Sent' and DATE(creation)=CURDATE()""")[0][0]
def get_unsubscribe_message(unsubscribe_message, expose_recipients):
if unsubscribe_message:
unsubscribe_html = '''<a href="<!--unsubscribe url-->"