using System; using System.Configuration; using System.Diagnostics; using System.Net.Mail; namespace ChadSoft.Edificator { internal class MailService : IMailService { private const string DefaultSubjectFormat = "[Wisdom] {0}"; private readonly SmtpClient _mailClient; private readonly string _senderEmailAddress; private readonly string _recipientEmailAddresses; private static readonly string _subjectFormat = ConfigurationManager.AppSettings["MailService.SubjectFormat"]; protected static string SubjectFormat { get { return string.IsNullOrEmpty(_subjectFormat) ? DefaultSubjectFormat : _subjectFormat; } } public MailService(string host, string senderEmailAddress, string recipientEmailAddresses) : this(new SmtpClient(host), senderEmailAddress, recipientEmailAddresses) { } public MailService(SmtpClient mailClient, string senderEmailAddress, string recipientEmailAddresses) { _mailClient = mailClient; _senderEmailAddress = senderEmailAddress; _recipientEmailAddresses = recipientEmailAddresses; } public void Mail(WisdomBit bitOfWisdom) { Mail(bitOfWisdom, _recipientEmailAddresses); } public void Mail(WisdomBit bitOfWisdom, string recipientAddresses) { MailMessage emailMessage = CreateEmailMessage(bitOfWisdom, recipientAddresses); SendMessage(emailMessage); Debug.WriteLine(string.Format("Bit of Wisdom '{0}' sent to {1}", emailMessage.Subject, recipientAddresses)); } protected virtual MailMessage CreateEmailMessage(WisdomBit bitOfWisdom, string recipientAddresses) { if (string.IsNullOrEmpty(recipientAddresses)) throw new ArgumentNullException("recipientAddresses"); string subject = string.Format(SubjectFormat, bitOfWisdom.Title); string body = string.Format("