Пример #1
0
 public dtoMailMessagePreview(Int32 idUserLanguage, lm.Comol.Core.DomainModel.Language dLanguage, dtoMailMessage message, MessageSettings settings, SmtpServiceConfig smtpConfig)
 {
     IdUserLanguage = idUserLanguage;
     IdUserLanguage = (dLanguage == null) ? 0 : dLanguage.Id;
     Message        = message;
     Settings       = settings;
     SmtpConfig     = smtpConfig;
     IsEmpty        = false;
 }
Пример #2
0
        private MailMessage CreateMessage(Int32 idUserLanguage, Language dLanguage, dtoMailMessage dtoMessage, Boolean replaceCRLF = false)
        {
            MailMessage message = new System.Net.Mail.MailMessage();

            //message.BodyEncoding = System.Text.Encoding.Unicode;
            //message.SubjectEncoding = System.Text.Encoding.Unicode;
            message.Sender = Sender(dtoMessage);
            message.From   = From(dtoMessage);
            if (dtoMessage.ReplyTo != null)
            {
                message.ReplyToList.Add(dtoMessage.ReplyTo);
            }
            if (!SMTPconfig.RelayAllowed && !message.ReplyToList.Any())
            {
                message.ReplyToList.Add(message.From);
            }


            if (MailSettings.NotifyToSender && message.ReplyToList.Any())
            {
                try {
                    if (!string.IsNullOrEmpty(dtoMessage.ReplyTo.DisplayName))
                    {
                        message.Headers.Add("Disposition-Notification-To", dtoMessage.ReplyTo.DisplayName + " <" + dtoMessage.ReplyTo.Address + ">");
                    }
                    else
                    {
                        message.Headers.Add("Disposition-Notification-To", "<" + dtoMessage.ReplyTo.Address + ">");
                    }
                } catch (Exception ex) {
                }
            }


            message.Subject    = Subject(idUserLanguage, dLanguage, dtoMessage);
            message.IsBodyHtml = MailSettings.IsBodyHtml;
            if (dtoMessage.Attachments != null && dtoMessage.Attachments.Count > 0)
            {
                dtoMessage.Attachments.ForEach(a => message.Attachments.Add(a));
            }
            message.Body = (message.IsBodyHtml && replaceCRLF ? dtoMessage.Body.Replace("\r\n", "<br>") : dtoMessage.Body);
            switch (MailSettings.Signature)
            {
            case Signature.FromConfigurationSettings:
                message.Body += ((message.IsBodyHtml) ? "<br/><br/>" : "\r\n\r\n\r\n") + SMTPconfig.GetSignature(idUserLanguage, dLanguage.Id);
                break;

            case Signature.FromNoReplySettings:
                message.Body += ((message.IsBodyHtml) ? "<br/><br/>" : "\r\n\r\n\r\n") + SMTPconfig.GetNoReplySignature(idUserLanguage, dLanguage.Id);
                break;
            }
            return(message);
        }
Пример #3
0
        public Boolean SendMail(String senderName, String senderMail, String subject, String body, String recipients, MessageSettings settings, SmtpServiceConfig smtpConfig)
        {
            Boolean result = false;

            try
            {
                //List<System.Net.Mail.MailAddress> rItems = new List<System.Net.Mail.MailAddress>();
                //if (!String.IsNullOrEmpty(recipients)){
                //    rItems.AddRange(recipients.Split(separator.ToCharArray(), StringSplitOptions.RemoveEmptyEntries).ToList().Select(m => new System.Net.Mail.MailAddress(m)).ToList());
                //}
                //string separator,
                Language dLanguage = CurrentManager.GetDefaultLanguage();
                lm.Comol.Core.Mail.MailService    mailService = new lm.Comol.Core.Mail.MailService(smtpConfig, settings);
                lm.Comol.Core.Mail.dtoMailMessage message     = new lm.Comol.Core.Mail.dtoMailMessage(subject, body);
                message.FromUser = new System.Net.Mail.MailAddress(senderMail, senderMail);
                mailService.SendMail(UserContext.Language.Id, dLanguage, message, recipients, MailCommons.Domain.RecipientType.BCC);

                result = true;
            }
            catch (Exception ex)
            {
            }
            return(result);
        }
Пример #4
0
        private MailException InternalSendMail(Int32 idUserLanguage, Language dLanguage, dtoMailMessage dtoMessage, Boolean replaceCRLF = false)
        {
            try{
                MailMessage          message    = CreateMessage(idUserLanguage, dLanguage, dtoMessage, replaceCRLF);
                SmtpClient           smtpClient = CreateSmtpClient();
                List <dtoRecipients> recipients = new List <dtoRecipients>();
                dtoMessage.To.ForEach(t => recipients.Add(new dtoRecipients()
                {
                    Mail = t, Type = RecipientType.To
                }));
                dtoMessage.CC.ForEach(t => recipients.Add(new dtoRecipients()
                {
                    Mail = t, Type = RecipientType.CC
                }));
                dtoMessage.BCC.ForEach(t => recipients.Add(new dtoRecipients()
                {
                    Mail = t, Type = RecipientType.BCC
                }));
                Int32 maxRecipients = SMTPconfig.MaxRecipients;
                int   Total         = recipients.Count;
                int   PageNumber    = 0;
                if (maxRecipients > 0)
                {
                    if (recipients.Count / maxRecipients < 1)
                    {
                        PageNumber = 0;
                    }
                    else
                    {
                        PageNumber = (recipients.Count % maxRecipients == 0 ? recipients.Count / maxRecipients - 1 : (recipients.Count / maxRecipients));
                    }
                }

                for (int i = 0; i <= PageNumber; i++)
                {
                    List <dtoRecipients> paged = null;
                    if (SMTPconfig.MaxRecipients > 0)
                    {
                        paged = recipients.Skip(maxRecipients * i).Take(maxRecipients).ToList();
                    }
                    else
                    {
                        paged = recipients;
                    }

                    if (paged != null && paged.Count > 0)
                    {
                        message.To.Clear();
                        message.CC.Clear();
                        message.Bcc.Clear();
                        paged.Where(p => p.Type == RecipientType.To).ToList().ForEach(p => message.To.Add(p.Mail));
                        paged.Where(p => p.Type == RecipientType.CC).ToList().ForEach(p => message.CC.Add(p.Mail));
                        paged.Where(p => p.Type == RecipientType.BCC).ToList().ForEach(p => message.Bcc.Add(p.Mail));

                        smtpClient.Send(message);
                    }
                }
                if (MailSettings.CopyToSender)
                {
                    message.To.Clear();
                    message.CC.Clear();
                    message.Bcc.Clear();
                    message.Subject = SubjectForCopy(idUserLanguage, dLanguage, dtoMessage);
                    message.To.Add(new MailAddress(dtoMessage.FromUser.DisplayName, dtoMessage.FromUser.Address));
                    smtpClient.Send(message);
                }
                return(MailException.MailSent);
            }
            catch (ArgumentOutOfRangeException outOfRangeException)
            {
                return(MailException.NoDestinationAddress);
            }
            catch (SmtpException smtpException)
            {
                return(MailException.SMTPunavailable);
            }
            catch (Exception ex) {
                return(MailException.UnknownError);
            }
        }
Пример #5
0
 public MailException SendMail(Int32 idUserLanguage, Language dLanguage, dtoMailMessage dtoMessage, String ToAdresses, RecipientType type, Boolean replaceCRLF = false)
 {
     return((dtoMessage.AddAddresses(ToAdresses, type) == MailException.None) ? InternalSendMail(idUserLanguage, dLanguage, dtoMessage, replaceCRLF) : MailException.InvalidAddress);
 }
Пример #6
0
 public MailException SendMail(Int32 idUserLanguage, Language dLanguage, dtoMailMessage dtoMessage, Boolean replaceCRLF = false)
 {
     return(InternalSendMail(idUserLanguage, dLanguage, dtoMessage, replaceCRLF));
 }
Пример #7
0
 private MailAddress Sender(dtoMailMessage dtoMessage)
 {
     return((SMTPconfig.RelayAllowed) ? ((MailSettings.SenderType == SenderUserType.System || dtoMessage.FromUser == null) ? SMTPconfig.GetSystemSender() : dtoMessage.FromUser) : SMTPconfig.GetSystemSender());
 }
Пример #8
0
 private MailAddress From(dtoMailMessage dtoMessage)
 {
     return((MailSettings.SenderType == MailCommons.Domain.SenderUserType.System) ? SMTPconfig.GetSystemSender() : dtoMessage.FromUser);
     //return (SMTPconfig.RelayAllowed) ? ((MailSettings.Sender == SenderType.System) ? SMTPconfig.SystemSender : dtoMessage.FromUser) : ((SMTPconfig.SystemSender.Address ==dtoMessage.FromUser.Address) ?  SMTPconfig.SystemSender : new MailAddress( SMTPconfig.SystemSender.Address, dtoMessage.FromUser.Address)) ;
 }
Пример #9
0
 private String SubjectForCopy(Int32 idUserLanguage, Language dLanguage, dtoMailMessage dtoMessage)
 {
     return((MailSettings.PrefixType == MailCommons.Domain.SubjectPrefixType.None) ? SMTPconfig.GetSubjectForSenderCopy(idUserLanguage, dLanguage.Id) + dtoMessage.UserSubject : SMTPconfig.GetSubjectPrefix(idUserLanguage, dLanguage.Id) + SMTPconfig.GetSubjectForSenderCopy(idUserLanguage, dLanguage.Id) + dtoMessage.UserSubject);
 }