private void RaiseErrorEvent(FileSenderErrorArgs arg) { SendingError?.Invoke(arg); if (arg.IsCritical) { SenderThread?.Abort(); TimerThread.Abort(); } }
private async Task SendEmail(string subject, string body, int credentialsIndex = 0) { var creds = _cfg.SmtpCredentials[credentialsIndex]; var message = NewMailMessage(subject, body, creds); var smtp = GetSmtpClient(creds); try { await smtp.SendMailAsync(message); } catch (Exception ex) { SendingError?.Invoke(this, ex); await Task.Delay(1000 * 2); var nextIdx = (credentialsIndex == _cfg.SmtpCredentials.Count - 1) ? 0 : credentialsIndex + 1; await SendEmail(subject, body, nextIdx); } }
/// <summary> /// Called after the network thrown an exception while sending data. /// </summary> /// <param name="sender">The sender instance.</param> /// <param name="ev">The <see cref="SendingErrorEventArgs"/> instance.</param> protected virtual void OnSendingError(object sender, SendingErrorEventArgs ev) => SendingError?.Invoke(sender, ev);