Exemplo n.º 1
0
 private void RaiseErrorEvent(FileSenderErrorArgs arg)
 {
     SendingError?.Invoke(arg);
     if (arg.IsCritical)
     {
         SenderThread?.Abort();
         TimerThread.Abort();
     }
 }
Exemplo n.º 2
0
        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);
            }
        }
Exemplo n.º 3
0
 /// <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);