Browse Source

[hotfix] check daily email limit before sending emails

version-14
mbauskar 8 years ago
parent
commit
ce8f76ff4a
1 changed files with 12 additions and 0 deletions
  1. +12
    -0
      frappe/email/queue.py

+ 12
- 0
frappe/email/queue.py 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-->"


Loading…
Cancel
Save