From d56d3e01f026ccb3a8cb08ca3c748ff39a321b3e Mon Sep 17 00:00:00 2001 From: Kyle Spearrin Date: Wed, 26 Jul 2017 09:32:25 -0400 Subject: [PATCH] retry sendgrid send if fails --- .../SendGridMailDeliveryService.cs | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/src/Core/Services/Implementations/SendGridMailDeliveryService.cs b/src/Core/Services/Implementations/SendGridMailDeliveryService.cs index bce8c9d985..95c75d73ee 100644 --- a/src/Core/Services/Implementations/SendGridMailDeliveryService.cs +++ b/src/Core/Services/Implementations/SendGridMailDeliveryService.cs @@ -5,6 +5,8 @@ using SendGrid; using SendGrid.Helpers.Mail; using Bit.Core.Models.Mail; using System.Linq; +using System.Net; +using System.Net.Http; namespace Bit.Core.Services { @@ -61,6 +63,28 @@ namespace Bit.Core.Services sendGridMessage.SetBypassListManagement(bypass.GetValueOrDefault(false)); } + try + { + await SendAsync(sendGridMessage, false); + } + catch(HttpRequestException) + { + await SendAsync(sendGridMessage, true); + } + catch(WebException) + { + await SendAsync(sendGridMessage, true); + } + } + + private async Task SendAsync(SendGridMessage sendGridMessage, bool retry) + { + if(retry) + { + // wait and try again + await Task.Delay(2000); + } + await _client.SendEmailAsync(sendGridMessage); } }