コード例 #1
0
        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);
        }
コード例 #3
0
        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);
        }