Beispiel #1
0
 public void SendDailySummary(string emailAddress, DailySummaryModel notification)
 {
     notification.BaseUrl = Settings.Current.BaseURL;
     System.Net.Mail.MailMessage msg = _emailGenerator.GenerateMessage(notification, "DailySummary");
     msg.To.Add(emailAddress);
     QueueMessage(msg);
 }
Beispiel #2
0
        private async Task QueueMessageAsync(System.Net.Mail.MailMessage message, string metricsName)
        {
            await _metrics.CounterAsync($"mailer.{metricsName}").AnyContext();

            CleanAddresses(message);
            await _queue.EnqueueAsync(message.ToMailMessage()).AnyContext();
        }
Beispiel #3
0
        private void QueueMessage(System.Net.Mail.MailMessage message)
        {
            CleanAddresses(message);

            _queue.Enqueue(message.ToMailMessage());
            _metricsClient.Counter(MetricNames.EmailsQueued);
        }
Beispiel #4
0
        public static System.Net.Mail.MailMessage ToMailMessage(this MailMessage notification)
        {
            var message = new System.Net.Mail.MailMessage {
                Subject = notification.Subject
            };

            if (!String.IsNullOrEmpty(notification.To))
            {
                message.To.Add(notification.To);
            }

            if (!String.IsNullOrEmpty(notification.From))
            {
                message.From = new MailAddress(notification.From);
            }

            if (!String.IsNullOrEmpty(notification.TextBody))
            {
                message.AlternateViews.Add(AlternateView.CreateAlternateViewFromString(notification.TextBody, null, "text/plain"));
            }

            if (!String.IsNullOrEmpty(notification.HtmlBody))
            {
                message.AlternateViews.Add(AlternateView.CreateAlternateViewFromString(notification.HtmlBody, null, "text/html"));
            }

            return(message);
        }
Beispiel #5
0
        private static void CleanAddresses(System.Net.Mail.MailMessage msg)
        {
            if (Settings.Current.WebsiteMode == WebsiteMode.Production)
            {
                return;
            }

            var invalid = new List <string>();

            invalid.AddRange(CleanAddresses(msg.To));
            invalid.AddRange(CleanAddresses(msg.CC));
            invalid.AddRange(CleanAddresses(msg.Bcc));

            if (invalid.Count == 0)
            {
                return;
            }

            if (invalid.Count <= 3)
            {
                msg.Subject = String.Concat("[", invalid.ToDelimitedString(), "] ", msg.Subject).StripInvisible();
            }

            msg.To.Add(Settings.Current.TestEmailAddress);
        }
Beispiel #6
0
        public static MailMessage ToMailMessage(this System.Net.Mail.MailMessage message)
        {
            var notification = new MailMessage {
                To   = message.To.ToString(),
                From = message.From != null?message.From.ToString() : null,
                           Subject = message.Subject
            };

            if (message.AlternateViews.Count == 0)
            {
                throw new ArgumentException("MailMessage must contain an alternative view.", "message");
            }

            foreach (AlternateView view in message.AlternateViews)
            {
                if (view.ContentType.MediaType == "text/html")
                {
                    using (var reader = new StreamReader(view.ContentStream))
                        notification.HtmlBody = reader.ReadToEnd();
                }

                if (view.ContentType.MediaType == "text/plain")
                {
                    using (var reader = new StreamReader(view.ContentStream))
                        notification.TextBody = reader.ReadToEnd();
                }
            }

            return(notification);
        }
Beispiel #7
0
        public Task SendDailySummaryAsync(string emailAddress, DailySummaryModel notification)
        {
            notification.BaseUrl = Settings.Current.BaseURL;
            System.Net.Mail.MailMessage msg = _emailGenerator.GenerateMessage(notification, "DailySummary");
            msg.To.Add(emailAddress);

            return(QueueMessageAsync(msg, "dailysummary"));
        }
Beispiel #8
0
        public Task SendOrganizationNoticeAsync(string emailAddress, OrganizationNotificationModel model)
        {
            model.BaseUrl = Settings.Current.BaseURL;

            System.Net.Mail.MailMessage msg = _emailGenerator.GenerateMessage(model, "OrganizationNotice");
            msg.To.Add(emailAddress);

            return(QueueMessageAsync(msg, "organizationnotice"));
        }
Beispiel #9
0
 public void SendVerifyEmail(User user)
 {
     System.Net.Mail.MailMessage msg = _emailGenerator.GenerateMessage(new UserModel {
         User    = user,
         BaseUrl = Settings.Current.BaseURL
     }, "VerifyEmail");
     msg.To.Add(user.EmailAddress);
     QueueMessage(msg);
 }
Beispiel #10
0
 public void SendPaymentFailed(User owner, Organization organization)
 {
     System.Net.Mail.MailMessage msg = _emailGenerator.GenerateMessage(new PaymentModel {
         Owner        = owner,
         Organization = organization,
         BaseUrl      = Settings.Current.BaseURL
     }, "PaymentFailed");
     msg.To.Add(owner.EmailAddress);
     QueueMessage(msg);
 }
Beispiel #11
0
        public Task SendVerifyEmailAsync(User user)
        {
            System.Net.Mail.MailMessage msg = _emailGenerator.GenerateMessage(new UserModel {
                User    = user,
                BaseUrl = Settings.Current.BaseURL
            }, "VerifyEmail");
            msg.To.Add(user.EmailAddress);

            return(QueueMessageAsync(msg, "verifyemail"));
        }
Beispiel #12
0
        public Task SendPaymentFailedAsync(User owner, Organization organization)
        {
            System.Net.Mail.MailMessage msg = _emailGenerator.GenerateMessage(new PaymentModel {
                Owner        = owner,
                Organization = organization,
                BaseUrl      = Settings.Current.BaseURL
            }, "PaymentFailed");
            msg.To.Add(owner.EmailAddress);

            return(QueueMessageAsync(msg, "paymentfailed"));
        }
Beispiel #13
0
 public void SendInvite(User sender, Organization organization, Invite invite)
 {
     System.Net.Mail.MailMessage msg = _emailGenerator.GenerateMessage(new InviteModel {
         Sender       = sender,
         Organization = organization,
         Invite       = invite,
         BaseUrl      = Settings.Current.BaseURL
     }, "Invite");
     msg.To.Add(invite.EmailAddress);
     QueueMessage(msg);
 }
Beispiel #14
0
        public Task SendAddedToOrganizationAsync(User sender, Organization organization, User user)
        {
            System.Net.Mail.MailMessage msg = _emailGenerator.GenerateMessage(new AddedToOrganizationModel {
                Sender       = sender,
                Organization = organization,
                User         = user,
                BaseUrl      = Settings.Current.BaseURL
            }, "AddedToOrganization");
            msg.To.Add(user.EmailAddress);

            return(QueueMessageAsync(msg));
        }
Beispiel #15
0
        public void SendPasswordReset(User user)
        {
            if (user == null || String.IsNullOrEmpty(user.PasswordResetToken))
            {
                return;
            }

            System.Net.Mail.MailMessage msg = _emailGenerator.GenerateMessage(new UserModel {
                User    = user,
                BaseUrl = Settings.Current.BaseURL
            }, "PasswordReset");
            msg.To.Add(user.EmailAddress);
            QueueMessage(msg);
        }
Beispiel #16
0
        public Task SendPasswordResetAsync(User user)
        {
            if (String.IsNullOrEmpty(user?.PasswordResetToken))
            {
                return(Task.CompletedTask);
            }

            System.Net.Mail.MailMessage msg = _emailGenerator.GenerateMessage(new UserModel {
                User    = user,
                BaseUrl = Settings.Current.BaseURL
            }, "PasswordReset");
            msg.To.Add(user.EmailAddress);

            return(QueueMessageAsync(msg));
        }
        public static System.Net.Mail.MailMessage ToMailMessage(this MailMessage notification) {
            var message = new System.Net.Mail.MailMessage { Subject = notification.Subject };
            if (!String.IsNullOrEmpty(notification.To))
                message.To.Add(notification.To);

            if (!String.IsNullOrEmpty(notification.From))
                message.From = new MailAddress(notification.From);

            if (!String.IsNullOrEmpty(notification.TextBody))
                message.AlternateViews.Add(AlternateView.CreateAlternateViewFromString(notification.TextBody, null, "text/plain"));

            if (!String.IsNullOrEmpty(notification.HtmlBody))
                message.AlternateViews.Add(AlternateView.CreateAlternateViewFromString(notification.HtmlBody, null, "text/html"));

            return message;
        }
Beispiel #18
0
 public static async Task SendAsync(this SmtpClient client, System.Net.Mail.MailMessage message)
 {
     // TODO: Verify that this works and see if there is a better method.
     client.Send(message);
     await Task.Yield();
 }
Beispiel #19
0
 private Task QueueMessageAsync(System.Net.Mail.MailMessage message)
 {
     CleanAddresses(message);
     return(_queue.EnqueueAsync(message.ToMailMessage()));
 }