diff --git a/frappe/email/queue.py b/frappe/email/queue.py index e3e2267f6e..5aa6e4c802 100755 --- a/frappe/email/queue.py +++ b/frappe/email/queue.py @@ -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 = '''