private static void SendEmail(IRecepiant recepiant, ISenderSettings senderSettings, IServerSettings serverSettings, IMessage message) { using (var smtp = new SmtpClient(serverSettings.Address, serverSettings.Port) { Credentials = new NetworkCredential(senderSettings.Address, senderSettings.Password), EnableSsl = serverSettings.SupportsSsl }) { recepiant.TransmitState = TransmitState.Sending; // Testing animation //#if DEBUG // Thread.Sleep(1000); // recepiant.TransmitState = TransmitState.SendFailed; // return; //#endif using (var email = new MailMessage()) { // set sender info email.From = new MailAddress(senderSettings.Address, senderSettings.Name); // set mail message email.IsBodyHtml = false; email.Subject = message.Subject; email.To.Add(recepiant.Address); email.Body = message.Body; // Add selected attachments var attachments = message.Attachments.Where(attachment => attachment.IsIncluded); foreach (var attachment in attachments) { email.Attachments.Add(new Attachment(attachment.FilePath)); } // Send email smtp.Send(email); // Cleanup foreach (var item in email.Attachments) { item.Dispose(); } email.Attachments.Clear(); // Update original mail state recepiant.TransmitState = TransmitState.SendSuccessful; } } }
public MessagesSender(ISenderSettings senderSettings) { this.senderSettings = senderSettings; sender = Task.Factory.StartNew(Executor, CancellationToken.None, TaskCreationOptions.LongRunning); }