コード例 #1
0
        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;
                }
            }
        }
コード例 #2
0
 public MessagesSender(ISenderSettings senderSettings)
 {
     this.senderSettings = senderSettings;
     sender = Task.Factory.StartNew(Executor, CancellationToken.None, TaskCreationOptions.LongRunning);
 }