예제 #1
0
        public MailMessage WelcomeMail(NewMemberMessage message)
        {
            Require.NotNull(message, "message");

            // FIXME: C'est un peu pourri ! À refaire ! Utiliser CultureInfo.DefaultThreadCurrentUICulture ?
            String template;

            if (CultureInfo.CurrentUICulture.TwoLetterISOLanguageName == "fr")
            {
                template = Resources.WelcomeMailBody;
            }
            else
            {
                template = Resources.WelcomeMailBody_English;
            }

            var tpl = new Template(template);

            tpl.Add("Message", message);
            tpl.Add("SiteUrl", _siteMap.Home().ToString());

            var mail = new MailMessage {
                Body       = tpl.Render(CultureInfo.CurrentCulture),
                IsBodyHtml = false,
                Subject    = Strings.Welcome_Subject
            };

            mail.To.Add(message.EmailAddress);

            return(mail);
        }
예제 #2
0
        /// <summary>
        /// Envoi des notifications lors de l'inscription d'un nouveau membre.
        /// </summary>
        /// <param name="message">Modèle du message à envoyer.</param>
        public void Publish(NewMemberMessage message)
        {
            Require.NotNull(message, "message");

            SmtpClient smtpClient = null;

            try
            {
                smtpClient = new SmtpClient();

                // On envoie d'abord le mail destiné au nouveau membre (le plus important).
                if (message.Recipients.Contains(MessageRecipients.Member))
                {
                    using (var mail = _mailMerge.WelcomeMail(message))
                    {
                        smtpClient.Send(mail);
                    }
                }

                if (message.Recipients.Contains(MessageRecipients.Admin))
                {
                    using (var notification = _mailMerge.NewMemberNotification(message))
                    {
                        smtpClient.Send(notification);
                    }
                }
            }
            catch (SmtpException ex)
            {
                // NB: On ne "rethrow" pas les exceptions SMTP.
                // Si une erreur intervient lors du message au nouveau membre, il n'aura
                // pas de mail contenant son mot de passe mais pourra le récupérer sur le site
                // via le lien "Mot de passe oublié".
                Log.Error(ex, "A SMTP error occured while sending the new member messages.");
            }
            finally
            {
                if (smtpClient != null)
                {
                    smtpClient.Dispose();
                }
            }
        }
예제 #3
0
        public MailMessage NewMemberNotification(NewMemberMessage message)
        {
            Require.NotNull(message, "message");

            var tpl = new Template(Resources.NewMemberNotificationBody);

            tpl.Add("Message", message);

            var mail = new MailMessage {
                Body       = tpl.Render(FrenchCultureInfo_),
                IsBodyHtml = false,
                Subject    = String.Format(
                    FrenchCultureInfo_,
                    "Nouvelle inscription sur le site : {0}.",
                    message.EmailAddress.DisplayName)
            };

            mail.To.Add(Constants.ContactAddress);

            return(mail);
        }