public async Task SendAsync(OperationContext context, NotificationMessage message) { Util.CheckNotEmpty(message.Recipients, "Recipient(s) not specified."); try { var session = context.OpenSystemSession(); var subject = message.GetString("Subject") ?? GetTemplatedValue(session, message, "Subject"); var body = message.GetString("Body") ?? GetTemplatedValue(session, message, "Body"); Util.CheckNotEmpty(message.From, "Email From address not specified in message."); Util.CheckNotEmpty(subject, "Subject not specified or Subject template '{0}.Subject' not found.", message.Type); Util.CheckNotEmpty(body, "Email body not specified or Body template '{0}.Body' not found.", message.Type); message.Body = body; if (message.Status == MessageStatus.Blocked) { return; } message.Status = MessageStatus.Sending; var mail = new MailMessage(message.From, message.Recipients, subject, body); await _smtpService.SendAsync(context, mail); message.Status = MessageStatus.Sent; } catch (Exception ex) { message.Status = MessageStatus.Error; message.Error = ex.ToLogString(); } }