private static SendGrid.SendGridMessage getSendGridMessage(EmailMessage message) { var m = new SendGrid.SendGridMessage(); m.From = message.From.ToMailAddress(); m.ReplyTo = message.ReplyToAddresses.Select(i => i.ToMailAddress()).ToArray(); m.To = message.ToAddresses.Select(i => i.ToMailAddress()).ToArray(); m.Cc = message.CcAddresses.Select(i => i.ToMailAddress()).ToArray(); m.Bcc = message.BccAddresses.Select(i => i.ToMailAddress()).ToArray(); m.Subject = message.Subject; foreach (var i in message.CustomHeaders) { m.Headers.Add(i.Item1, i.Item2); } m.Text = htmlToPlainText(message.BodyHtml); m.Html = message.BodyHtml; foreach (var i in message.Attachments) { if (i.Stream == null) { m.AddAttachment(i.FilePath); } else { m.AddAttachment(i.Stream, i.AttachmentDisplayName); } } return(m); }
private static SendGrid.SendGridMessage getSendGridMessage( EmailMessage message ) { var m = new SendGrid.SendGridMessage(); m.From = message.From.ToMailAddress(); m.ReplyTo = message.ReplyToAddresses.Select( i => i.ToMailAddress() ).ToArray(); m.To = message.ToAddresses.Select( i => i.ToMailAddress() ).ToArray(); m.Cc = message.CcAddresses.Select( i => i.ToMailAddress() ).ToArray(); m.Bcc = message.BccAddresses.Select( i => i.ToMailAddress() ).ToArray(); m.Subject = message.Subject; foreach( var i in message.CustomHeaders ) m.Headers.Add( i.Item1, i.Item2 ); m.Text = htmlToPlainText( message.BodyHtml ); m.Html = message.BodyHtml; foreach( var i in message.Attachments ) { if( i.Stream == null ) m.AddAttachment( i.FilePath ); else m.AddAttachment( i.Stream, i.AttachmentDisplayName ); } return m; }
/// <summary> /// Envia Email por sendgrid (utiliza la clave de sicsoft para el envío) /// </summary> /// <param name="para">Destinatario de Email (pueden ser varios separados por punto y coma (;))</param> /// <param name="copia">Emails a los que se desea enviar copia (pueden ser varios separados por punto y coma (;))</param> /// <param name="copiaOculta">Emails a los que se desea enviar copia oculta (pueden ser varios separados por punto y coma (;))</param> /// <param name="de">Email que se desea aparezca como remitente </param> /// <param name="displayName">Nombre que se desea mostrar como remitente</param> /// <param name="asunto">Asunto del Email</param> /// <param name="html">Html del body del email a enviar</param> /// <returns>Retorna true si el envío fué correcto o false si falla</returns> public bool Send(string para, string copia, string copiaOculta, string de, string displayName, string asunto, string html, string[] ArchivosAdjuntos = null) { try { string usaSendgrid = "0"; try { usaSendgrid = WebConfigurationManager.AppSettings["UsaSendgrid"].ToString(); } catch { usaSendgrid = "0"; } if (usaSendgrid == "1") { var myMessage = new SendGrid.SendGridMessage(); var paraList = para.Split(';'); foreach (var p in paraList) { if (p.Trim().Length > 0) { myMessage.AddTo(p.Trim()); } } var ccList = copia.Split(';'); foreach (var cc in ccList) { if (cc.Trim().Length > 0) { myMessage.AddCc(cc.Trim()); } } var ccoList = copiaOculta.Split(';'); foreach (var cco in ccoList) { if (cco.Trim().Length > 0) { myMessage.AddBcc(cco.Trim()); } } myMessage.From = new MailAddress(de, displayName); myMessage.Subject = asunto; myMessage.Html = html; if (ArchivosAdjuntos != null) { foreach (var archivo in ArchivosAdjuntos) { if (!string.IsNullOrEmpty(archivo)) { myMessage.AddAttachment(archivo); } } } //SendGrid.Web transportWeb = new SendGrid.Web("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"); string sendgridKey = ""; try { // Intenta utilizar el SendGridKey del config, la idea es que cada cliente // tenga su propio sendgrid sendgridKey = WebConfigurationManager.AppSettings["SendGridKey"]; } catch (Exception) { // si da error utilizar el key de SICSOFT sendgridKey = "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"; } SendGrid.Web transportWeb = new SendGrid.Web(sendgridKey); transportWeb.DeliverAsync(myMessage); } else { MailMessage mail = new MailMessage(); mail.Subject = asunto; mail.Body = html; mail.IsBodyHtml = true; //mail.From = new MailAddress(WebConfigurationManager.AppSettings["UserName"], displayName); mail.From = new MailAddress(WebConfigurationManager.AppSettings["UserName"], displayName); var paraList = para.Split(';'); foreach (var p in paraList) { if (p.Trim().Length > 0) { mail.To.Add(p.Trim()); } } var ccList = copia.Split(';'); foreach (var cc in ccList) { if (cc.Trim().Length > 0) { mail.CC.Add(cc.Trim()); } } var ccoList = copiaOculta.Split(';'); foreach (var cco in ccoList) { if (cco.Trim().Length > 0) { mail.Bcc.Add(cco.Trim()); } } if (ArchivosAdjuntos != null) { foreach (var archivo in ArchivosAdjuntos) { if (!string.IsNullOrEmpty(archivo)) { mail.Attachments.Add(new Attachment(archivo)); } } } SmtpClient client = new SmtpClient(); client.Host = WebConfigurationManager.AppSettings["HostName"]; client.Port = int.Parse(WebConfigurationManager.AppSettings["Port"].ToString()); client.UseDefaultCredentials = false; client.DeliveryMethod = SmtpDeliveryMethod.Network; client.EnableSsl = bool.Parse(WebConfigurationManager.AppSettings["EnableSsl"]); client.Credentials = new NetworkCredential(WebConfigurationManager.AppSettings["UserName"], WebConfigurationManager.AppSettings["Password"]); client.Send(mail); client.Dispose(); mail.Dispose(); } return(true); } catch (Exception) { return(false); } }