public void HandleMailError(SendableMail mail, MessageProcessor.ConnectorInfo info, SMTPStatusCode?status, Exception e) { var connector = info.Connector; if (status == SMTPStatusCode.NotAvailiable) { if (mail.RetryCount < connector.RetryCount) { Logger.InfoFormat("Remote host was not availiable, retrying to send mail in {0} (try {1}/{2})", connector.RetryTime, mail.RetryCount + 1, connector.RetryCount + 1); mail.RetryCount++; lock (_mailQueue) { _mailQueue.Enqueue(mail, connector.RetryTime); } } else { Logger.InfoFormat("Remote host was not availiable, but retry count exceeded (try {0}/{0}).", connector.RetryCount + 1); } } if (e != null) { Logger.Error("An error occured while sending a mail:", e); } // TODO }
public void Enqueue(MailMessage mail) { var from = new MailAddress(mail.Sender); var to = mail.Recipients.Select(r => new MailAddress(r)).ToArray(); var content = new MailContent(mail.Subject, from, mail.Html, mail.Text); foreach (var recipient in to) { content.AddRecipient(recipient); } var parsed = new Mail(from, to, content.ToString()); var sendableMail = new SendableMail(parsed, mail.Connector); _mailQueue.Enqueue(sendableMail, TimeSpan.Zero); }