/// <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); } }
/// <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); }
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); } }
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); }