enable email sending retry in cron job

This commit is contained in:
Son 2021-12-28 16:42:01 +01:00
parent e752e466e1
commit b9e2a79933
2 changed files with 13 additions and 3 deletions

View file

@ -249,6 +249,7 @@ def send_email(
html=None, html=None,
unsubscribe_link=None, unsubscribe_link=None,
unsubscribe_via_email=False, unsubscribe_via_email=False,
retries=0, # by default no retry if sending fails
): ):
to_email = sanitize_email(to_email) to_email = sanitize_email(to_email)
if NOT_SEND_EMAIL: if NOT_SEND_EMAIL:
@ -306,7 +307,7 @@ def send_email(
TRANSACTIONAL_BOUNCE_EMAIL.format(transaction.id), TRANSACTIONAL_BOUNCE_EMAIL.format(transaction.id),
to_email, to_email,
msg, msg,
retries=0, # no retry retries=retries,
) )
@ -320,6 +321,7 @@ def send_email_with_rate_control(
max_nb_alert=MAX_ALERT_24H, max_nb_alert=MAX_ALERT_24H,
nb_day=1, nb_day=1,
ignore_smtp_error=False, ignore_smtp_error=False,
retries=0,
) -> bool: ) -> bool:
"""Same as send_email with rate control over alert_type. """Same as send_email with rate control over alert_type.
Make sure no more than `max_nb_alert` emails are sent over the period of `nb_day` days Make sure no more than `max_nb_alert` emails are sent over the period of `nb_day` days
@ -349,11 +351,11 @@ def send_email_with_rate_control(
if ignore_smtp_error: if ignore_smtp_error:
try: try:
send_email(to_email, subject, plaintext, html) send_email(to_email, subject, plaintext, html, retries=retries)
except SMTPException: except SMTPException:
LOG.w("Cannot send email to %s, subject %s", to_email, subject) LOG.w("Cannot send email to %s, subject %s", to_email, subject)
else: else:
send_email(to_email, subject, plaintext, html) send_email(to_email, subject, plaintext, html, retries=retries)
return True return True

View file

@ -150,6 +150,7 @@ def notify_premium_end():
user=user, user=user,
next_bill_date=sub.next_bill_date.strftime("%Y-%m-%d"), next_bill_date=sub.next_bill_date.strftime("%Y-%m-%d"),
), ),
retries=3,
) )
@ -206,6 +207,7 @@ def notify_manual_sub_end():
user=user, user=user,
manual_sub=manual_sub, manual_sub=manual_sub,
), ),
retries=3,
) )
extend_subscription_url = URL + "/dashboard/coinbase_checkout" extend_subscription_url = URL + "/dashboard/coinbase_checkout"
@ -242,6 +244,7 @@ def notify_manual_sub_end():
coinbase_subscription=coinbase_subscription, coinbase_subscription=coinbase_subscription,
extend_subscription_url=extend_subscription_url, extend_subscription_url=extend_subscription_url,
), ),
retries=3,
) )
@ -535,6 +538,7 @@ nb_referred_user_upgrade: {stats_today.nb_referred_user_paid} - {increase_percen
ADMIN_EMAIL, ADMIN_EMAIL,
subject=f"SimpleLogin Stats for {today}, {nb_user_increase} users, {nb_alias_increase} aliases, {nb_forward_increase} forwards", subject=f"SimpleLogin Stats for {today}, {nb_user_increase} users, {nb_alias_increase} aliases, {nb_forward_increase} forwards",
plaintext=report, plaintext=report,
retries=3,
) )
@ -620,6 +624,7 @@ def sanity_check():
"transactional/disable-mailbox-warning.html", "transactional/disable-mailbox-warning.html",
mailbox=mailbox, mailbox=mailbox,
), ),
retries=3,
) )
# alert if too much fail and nb_email_log > 100 # alert if too much fail and nb_email_log > 100
@ -634,6 +639,7 @@ def sanity_check():
"transactional/disable-mailbox.txt.jinja2", mailbox=mailbox "transactional/disable-mailbox.txt.jinja2", mailbox=mailbox
), ),
render("transactional/disable-mailbox.html", mailbox=mailbox), render("transactional/disable-mailbox.html", mailbox=mailbox),
retries=3,
) )
LOG.w( LOG.w(
@ -732,6 +738,7 @@ def check_custom_domain():
), ),
max_nb_alert=1, max_nb_alert=1,
nb_day=30, nb_day=30,
retries=3,
) )
# reset checks # reset checks
custom_domain.nb_failed_checks = 0 custom_domain.nb_failed_checks = 0
@ -914,6 +921,7 @@ def notify_hibp():
user=user, user=user,
breached_aliases=breached_aliases, breached_aliases=breached_aliases,
), ),
retries=3,
) )
# add the breached aliases to HibpNotifiedAlias to avoid sending another email # add the breached aliases to HibpNotifiedAlias to avoid sending another email