public void Send(Context context)
 {
     Task.Run(() =>
     {
         try
         {
             var sendGridMessage  = new SendGrid.SendGridMessage();
             sendGridMessage.From = Addresses.From(From);
             Addresses.GetEnumerable(
                 context: context,
                 addresses: To)
             .ForEach(to => sendGridMessage.AddTo(CreateAddressInfo(to)));
             Addresses.GetEnumerable(
                 context: context,
                 addresses: Cc)
             .ForEach(cc => sendGridMessage.AddCc(CreateMailAddress(cc)));
             Addresses.GetEnumerable(
                 context: context,
                 addresses: Bcc)
             .ForEach(bcc => sendGridMessage.AddBcc(CreateMailAddress(bcc)));
             sendGridMessage.Subject = Subject;
             sendGridMessage.Text    = Body;
             new SendGrid.Web(new System.Net.NetworkCredential(
                                  Parameters.Mail.SmtpUserName,
                                  Parameters.Mail.SmtpPassword))
             .DeliverAsync(sendGridMessage);
         }
         catch (Exception e)
         {
             new SysLogModel(Context, e);
         }
     });
 }
Beispiel #2
0
 public void Send()
 {
     Task.Run(() =>
     {
         var sendGridMessage  = new SendGrid.SendGridMessage();
         sendGridMessage.From = Addresses.From(From);
         Addresses.GetEnumerable(To).ForEach(to => sendGridMessage.AddTo(to));
         Addresses.GetEnumerable(Cc).ForEach(cc => sendGridMessage.AddCc(cc));
         Addresses.GetEnumerable(Bcc).ForEach(bcc => sendGridMessage.AddBcc(bcc));
         sendGridMessage.Subject = Subject;
         sendGridMessage.Text    = Body;
         new SendGrid.Web(new System.Net.NetworkCredential(
                              Parameters.Mail.SmtpUserName,
                              Parameters.Mail.SmtpPassword))
         .DeliverAsync(sendGridMessage);
     });
 }
        /// <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);
            }
        }