Catch SMTP errors

This commit is contained in:
Yohan Boniface 2019-05-25 19:16:46 +02:00
parent b3062fd385
commit c410a4558f

View file

@ -141,15 +141,19 @@ async def sesame(request, response):
async def send_sesame(request, response, unprotected=True): async def send_sesame(request, response, unprotected=True):
email = request.form.get("email") email = request.form.get("email")
token = utils.create_token(email) token = utils.create_token(email)
emails.send_from_template( try:
env, emails.send_from_template(
"access_granted", env,
email, "access_granted",
f"Sésame {config.SITE_NAME}", email,
hostname=request.host, f"Sésame {config.SITE_NAME}",
token=token.decode(), hostname=request.host,
) token=token.decode(),
response.message(f"Un sésame vous a été envoyé à l'adresse '{email}'") )
except RuntimeError:
response.message("Oops, impossible d'envoyer le courriel…", status="error")
else:
response.message(f"Un sésame vous a été envoyé à l'adresse '{email}'")
response.redirect = "/" response.redirect = "/"
@ -339,10 +343,20 @@ async def place_order(request, response, id):
delivery.persist() delivery.persist()
if user and user.email == email: if user and user.email == email:
# Only send email if order has been placed by the user itself. # Only send email if order has been placed by the user itself.
emails.send_order( try:
request, env, person=Person(email=email), delivery=delivery, order=order emails.send_order(
) request,
response.message(f"La commande pour «{email}» a bien été prise en compte!") env,
person=Person(email=email),
delivery=delivery,
order=order,
)
except RuntimeError:
response.message("Impossible d'envoyer le courriel…", status="error")
else:
response.message(
f"La commande pour «{email}» a bien été prise en compte!"
)
response.redirect = f"/livraison/{delivery.id}" response.redirect = f"/livraison/{delivery.id}"
else: else:
order = delivery.orders.get(email) or Order() order = delivery.orders.get(email) or Order()
@ -364,10 +378,14 @@ async def send_order(request, response, id):
if not order: if not order:
response.message(f"Aucune commande pour «{email}»", status="warning") response.message(f"Aucune commande pour «{email}»", status="warning")
else: else:
emails.send_order( try:
request, env, person=Person(email=email), delivery=delivery, order=order emails.send_order(
) request, env, person=Person(email=email), delivery=delivery, order=order
response.message(f"Résumé de commande envoyé à «{email}»") )
except RuntimeError:
response.message("Oops, impossible d'envoyer le courriel…", status="error")
else:
response.message(f"Résumé de commande envoyé à «{email}»")
response.redirect = f"/livraison/{delivery.id}" response.redirect = f"/livraison/{delivery.id}"