public async Task <ContactFormSettings> GetFormSettings() { if (_form == null) { _form = await _contactFormResolver.GetCurrentContactForm().ConfigureAwait(false); } return(_form); }
public async Task <MessageResult> Process(ContactFormMessage message) { var form = await contactFormResolver.GetCurrentContactForm().ConfigureAwait(false); var smtpOptions = await smtpOptionsProvider.GetSmtpOptions().ConfigureAwait(false); var errorList = new List <MessageError>(); if (string.IsNullOrEmpty(smtpOptions.Server)) { throw new InvalidOperationException("smtp settings are not configured"); } EmailSender sender = new EmailSender(); try { var plainTextMessage = await viewRenderer.RenderViewAsString <ContactFormMessage>(messageProcessorOptions.NotificationTextViewName, message); var htmlMessage = await viewRenderer.RenderViewAsString <ContactFormMessage>(messageProcessorOptions.NotificationHtmlViewName, message); var replyTo = message.Email; await sender.SendMultipleEmailAsync( smtpOptions, form.NotificationEmailCsv, smtpOptions.DefaultEmailFromAddress, message.Subject, plainTextMessage, htmlMessage, replyTo ).ConfigureAwait(false); if (form.CopySubmitterEmailOnSubmission) { try { plainTextMessage = await viewRenderer.RenderViewAsString <ContactFormMessage>( messageProcessorOptions.SubmitterNotificationTextViewName, message); htmlMessage = await viewRenderer.RenderViewAsString <ContactFormMessage>( messageProcessorOptions.SubmitterNotificationHtmlViewName, message); await sender.SendEmailAsync( smtpOptions, message.Email, smtpOptions.DefaultEmailFromAddress, message.Subject, plainTextMessage, htmlMessage ).ConfigureAwait(false); } catch (Exception ex) { log.LogError("error sending contact form submitter notification email", ex); var m = new MessageError(); m.Code = "SubmitterNotificationError"; m.Description = ex.Message; errorList.Add(m); } } } catch (Exception ex) { log.LogError("error sending contact form notification email: " + ex.Message, ex); var m = new MessageError(); m.Code = "NotificationError"; m.Description = ex.Message; errorList.Add(m); } if (errorList.Count > 0) { return(MessageResult.Failed(errorList.ToArray())); } return(MessageResult.Success); }
public async Task <MessageResult> Process(ContactFormMessage message) { var errorList = new List <MessageError>(); var sender = await _emailSenderResolver.GetEmailSender(); if (sender == null) { var logMessage = $"failed to send account confirmation email because email settings are not populated"; _log.LogError(logMessage); var m = new MessageError { Code = "NoSenderError", Description = logMessage }; errorList.Add(m); return(MessageResult.Failed(errorList.ToArray())); } var form = await _contactFormResolver.GetCurrentContactForm().ConfigureAwait(false); message.Tenant = await _tenantResolver.ResolveTenant(); try { var plainTextMessage = await _viewRenderer.RenderViewAsString <ContactFormMessage>(_messageProcessorOptions.NotificationTextViewName, message); var htmlMessage = await _viewRenderer.RenderViewAsString <ContactFormMessage>(_messageProcessorOptions.NotificationHtmlViewName, message); var replyTo = message.Email; await sender.SendEmailAsync( form.NotificationEmailCsv, null, message.Subject, plainTextMessage, htmlMessage, replyTo ).ConfigureAwait(false); if (form.CopySubmitterEmailOnSubmission) { try { plainTextMessage = await _viewRenderer.RenderViewAsString <ContactFormMessage>( _messageProcessorOptions.SubmitterNotificationTextViewName, message); htmlMessage = await _viewRenderer.RenderViewAsString <ContactFormMessage>( _messageProcessorOptions.SubmitterNotificationHtmlViewName, message); await sender.SendEmailAsync( message.Email, null, message.Subject, plainTextMessage, htmlMessage ).ConfigureAwait(false); } catch (Exception ex) { _log.LogError($"error sending contact form submitter notification email {ex.Message} : {ex.StackTrace}"); var m = new MessageError { Code = "SubmitterNotificationError", Description = ex.Message }; errorList.Add(m); } } } catch (Exception ex) { _log.LogError($"error sending contact form notification email: {ex.Message} : {ex.StackTrace}"); var m = new MessageError { Code = "NotificationError", Description = ex.Message }; errorList.Add(m); } if (errorList.Count > 0) { return(MessageResult.Failed(errorList.ToArray())); } return(MessageResult.Success); }