コード例 #1
0
        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);
        }
コード例 #2
0
        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;
        }
コード例 #3
0
        /// <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);
            }
        }