Beispiel #1
0
        /// <summary>
        /// Envía un correo electrónico
        /// </summary>
        /// <param name="pMailAddress"></param>
        /// <param name="pPassword"></param>
        /// <param name="pMailMessage"></param>
        public void Send(string pMailAddress, string pPassword, Shared.MailMessage pMailMessage)
        {
            try
            {
                //se castea el mensaje
                System.Net.Mail.MailMessage mMessage = this.CreateMessage(pMailMessage);

                //se crean las credenciales para enviar
                NetworkCredential mCredential = new NetworkCredential(pMailAddress, pPassword);

                //se configura el cliente y se envía el correo
                new SmtpClient()
                {
                    Host                  = this.iProtocol.Host,
                    Port                  = this.iProtocol.Port,
                    EnableSsl             = this.iProtocol.SSL,
                    UseDefaultCredentials = true,
                    Credentials           = mCredential
                }.Send(mMessage);
            }
            catch (Exception bException)
            {
                throw new FailOnSend("Error en SMTP, posible problema con la conexión, autenticación o durante el envío del correo. Vea excepción interna.", bException);
            }
        }
        public void Send(int pMailAccountId, string pProtocolName, IEnumerable <string> pToMailAddresses, string pSubject, string pBody)
        {
            try
            {
                //se obtiene la cuenta del usuario activo
                MailAccount mMailAccount = this.iMailAccountRepository.Single(MailAccountSelector.ById(pMailAccountId));

                //se crea el mensaje
                MailMessage mMailMessage = new Shared.MailMessage()
                {
                    Subject = pSubject,
                    To      = pToMailAddresses.Select(bMailAddress => new Shared.MailAddress()
                    {
                        Value = bMailAddress
                    }).ToList(),
                    Body = pBody
                };

                mMailMessage.From = mMailAccount.MailAddress;
                //guardar el mensaje en el repositorio
                mMailAccount.MailAddress.FromMessages.Add(mMailMessage);
                mMailMessage.To       = this.ResolveDbMailAddresses(mMailMessage.To).ToList();
                mMailMessage.DateSent = DateTime.Now.ToShortDateString();
                MCDAL.Instance.Save();

                this.Send(pProtocolName, mMailAccount.GetMailServiceHost(), mMailAccount.MailAddress.Value, this.iEncryptor.Decrypt(mMailAccount.Password), mMailMessage);
            }
            catch (Exception bException)
            {
                throw new FailOnSend(Resources.Exceptions.MailService_Send_FailOnSend, bException);
            }
        }
Beispiel #3
0
        /// <summary>
        /// castea el mensaje al tipo MailMessage de .Net
        /// </summary>
        /// <param name="pMailMessage"></param>
        /// <returns></returns>
        private System.Net.Mail.MailMessage CreateMessage(Shared.MailMessage pMailMessage)
        {
            System.Net.Mail.MailMessage mMailMessage = new System.Net.Mail.MailMessage()
            {
                From    = new System.Net.Mail.MailAddress(pMailMessage.From.Value),
                Subject = pMailMessage.Subject,
                Body    = pMailMessage.Body,
            };

            pMailMessage.To.ToList()
            .ForEach(bAddress => mMailMessage.To.Add(bAddress.Value));

            return(mMailMessage);
        }
Beispiel #4
0
 private void Send(string pMailAddress, string pPassword, Shared.MailMessage pMailMessage)
 {
     try
     {
         //se configura el cliente y se envía el correo
         new SmtpClient()
         {
             Host                  = this.iProtocol.Host,
             Port                  = this.iProtocol.Port,
             EnableSsl             = this.iProtocol.SSL,
             UseDefaultCredentials = true,
             Credentials           = new NetworkCredential(pMailAddress, pPassword)
         }.Send(pMailMessage.ToNetMailMessage());
     }
     catch (Exception bException)
     {
         throw new FailOnSend(Resources.Exceptions.Smtp_SendMessage_FailOnSend, bException);
     }
 }
Beispiel #5
0
        public void Execute(int pMailAccountId, string pProtocolName, IEnumerable <string> pToMailAddresses, string pSubject, string pBody)
        {
            try
            {
                //se obtiene la cuenta del usuario activo
                this.iMailAccount = this.iMailAccountRepository.Single(MailAccountSelector.ById(pMailAccountId));

                //se crea el mensaje
                this.iMailMessage = new Shared.MailMessage()
                {
                    Subject = pSubject,
                    To      = pToMailAddresses.Select(bMailAddress => new Shared.MailAddress()
                    {
                        Value = bMailAddress
                    }).ToList(),
                    Body = pBody
                };

                //se obtienen los datos del protocolo
                this.iProtocol = this.iMailServiceRepository
                                 .Single(MailServiceSelector.ByName(this.iMailAccount.GetMailServiceHost()))
                                 .Protocols.Single(bProtocol => bProtocol.Name.ToLower() == pProtocolName);

                iMailMessage.From = iMailAccount.MailAddress;
                //guardar el mensaje en el repositorio
                iMailAccount.MailAddress.FromMessages.Add(iMailMessage);
                iMailMessage.To = this.ResolveDbMailAddresses(iMailMessage.To).ToList();
                MCDAL.Instance.Save();

                this.Send(iMailAccount.MailAddress.Value, this.iEncryptor.Decrypt(iMailAccount.Password), iMailMessage);
            }
            catch (Exception bException)
            {
                throw new FailOnSend(Resources.Exceptions.MailService_Send_FailOnSend, bException);
            }
        }
        private void Send(string pProtocolName, string pMailServiceHost, string pMailAddress, string pPassword, Shared.MailMessage pMailMessage)
        {
            //se obtienen los datos del protocolo
            IProtocol mProtocol = this.iMailServiceRepository
                                  .Single(MailServiceSelector.ByName(pMailServiceHost))
                                  .Protocols.Single(bProtocol => bProtocol.Name.ToLower() == pProtocolName);

            //se configura el cliente y se envía el correo
            new Smtp(mProtocol).Send(pMailAddress, pPassword, pMailMessage);
        }