public async Task <ServiceResponse <INotificationResult> > NotifyAsync() { ServiceResponse <INotificationResult> result = new ServiceResponse <INotificationResult>(); if (null == mailNotificationModel) { result.ObjectResult = null; result.Status = new ServiceStatus { Code = 2, Message = "MissingNotificationModel" }; return(result); } SparkPostClient client = new SparkPostClient(); TransmissionContent transmissionContent = new TransmissionContent { ApiCredentials = mailNotificationModel.Credentials }; Dictionary <string, string> headers = new Dictionary <string, string>(); ParseDestinations(headers, DestinationType.CC); ParseDestinations(headers, DestinationType.BCC); var inlineImages = ParseAttachments(AttachmentType.Image); if (inlineImages.Status.Code == 2) { result.ObjectResult = null; result.Status = inlineImages.Status; return(result); } var attachments = ParseAttachments(AttachmentType.Attachment); if (attachments.Status.Code == 2) { result.ObjectResult = null; result.Status = attachments.Status; return(result); } transmissionContent.Content = new EmailContent { From = new EmailAddress { Email = mailNotificationModel.From.Email.Trim(), Name = mailNotificationModel.From.Name.Trim(), }, Subject = mailNotificationModel.Subject.Trim(), Html = mailNotificationModel.Text, EmailInlineImages = inlineImages.ObjectResult, EmailAttachments = attachments.ObjectResult, Headers = headers }; ParseReplyTo(transmissionContent); var recipients = ParseTo(); if (recipients.Status.Code == 0) { transmissionContent.Recipients = recipients.ObjectResult; } else { result.ObjectResult = null; result.Status = recipients.Status; return(result); } var notificationResult = client.SendNotification(transmissionContent); notificationResult.Wait(); result.Status = notificationResult.Result.Status; result.ObjectResult = new SparkPostNotificationResult(); (result.ObjectResult as SparkPostNotificationResult).NotificationResponse = notificationResult.Result; return(result); }