コード例 #1
0
 public bool Actualizar_TipoMensaje(mail_Mensaje_Info correoInfo, ref string mensajeError)
 {
     try
     {
         return(Odata.Actualizar_TipoMensaje(correoInfo, ref mensajeError));
     }
     catch (Exception)
     {
         return(false);
     }
 }
コード例 #2
0
        public Boolean Enviar_Correo_hold(mail_Mensaje_Info MensajeInfo, ref string mensajeErrorOut)
        {
            string SConfigCta = "";

            try
            {
                if (param.AUTORIZADO_ENVIO_CORREO == false)
                {
                    mensajeErrorOut = "No esta autorizado para envio de correo ";
                    return(false);
                }

                string mensajeError            = "";
                string tipo_conex_cifrada_smtp = "";


                //optengo el nombre de la pc para saber desde donde se envi el correo para auditar la duplicacion...
                MensajeInfo.Texto_mensaje = MensajeInfo.Texto_mensaje + " PC/Envio: " + Funciones.Get_Nombre_PC();
                /////////////


                mail_Cuentas_Correo_Info InfoCtaMail_Remitente = new mail_Cuentas_Correo_Info();
                InfoCtaMail_Remitente = listMail_cta.FirstOrDefault(v => v.IdCuenta == MensajeInfo.IdCuenta);


                if (listMail_x_Empresa.Count == 0)
                {
                    mensajeErrorOut = "No Existe cuentas para envio de correo configuradas en la base ";
                    return(false);
                }

                if (InfoCtaMail_Remitente == null || InfoCtaMail_Remitente.IdCuenta == null)
                {
                    mensajeErrorOut = "No existe una cuenta relaciona en la base para la cuenta del mensaje verique por base";
                    return(false);
                }


                if (!mailValida.email_bien_escrito(MensajeInfo.Para))
                {
                    mensajeErrorOut            = "La cuenta de correo es Invalida ";
                    MensajeInfo.IdTipo_Mensaje = eTipoMail.Mail_NO_Env_x_error;
                    datamaMail.Actualizar_TipoMensaje(MensajeInfo, ref mensajeErrorOut);
                    return(false);
                }

                if (MensajeInfo.IdCuenta == "" || MensajeInfo.IdCuenta == null)
                {
                    InfoCtaMail_Remitente      = listMail_cta.FirstOrDefault(v => v.cta_predeterminada == true);
                    MensajeInfo.IdCuenta       = InfoCtaMail_Remitente.IdCuenta;
                    MensajeInfo.mail_remitente = InfoCtaMail_Remitente.direccion_correo;

                    datamaMail.Actualizar_Datos_Cuenta(MensajeInfo, ref mensajeErrorOut);

                    mensajeErrorOut = "la Cuenta Remitente no esta establecido en el mensaje se enviara con la cuenta por default ...";
                }
                SmtpMail              oSmtpMail_msg = new SmtpMail("ES-C1407722592-00106-56VB4AE2B4F8TB75-641B598EBE4D439A");
                SmtpServer            oSmtpServer   = new SmtpServer(InfoCtaMail_Remitente.ServidorCorreoSaliente, InfoCtaMail_Remitente.Port_salida);
                EASendMail.SmtpClient oclienteSmtp  = new EASendMail.SmtpClient();



                if (InfoCtaMail_Remitente.Confirmacion_de_Entrega == true || InfoCtaMail_Remitente.Confirmacion_de_Lectura == true)
                {
                    oSmtpMail_msg.DeliveryNotification = EASendMail.DeliveryNotificationOptions.OnFailure | EASendMail.DeliveryNotificationOptions.OnSuccess | EASendMail.DeliveryNotificationOptions.Delay;

                    if (InfoCtaMail_Remitente.Confirmacion_de_Lectura == true)
                    {
                        oSmtpMail_msg.Headers.Add("Read-Receipt-To", InfoCtaMail_Remitente.direccion_correo);
                    }
                    if (InfoCtaMail_Remitente.Confirmacion_de_Entrega == true)
                    {
                        oSmtpMail_msg.Headers.Add("Disposition-Notification-To", InfoCtaMail_Remitente.direccion_correo);
                    }
                }

                // si tiene archivo adjunto
                if (MensajeInfo.Tiene_Adjunto == true)
                {
                    #region codigo viejo q actualiza el campo de mail



                    #endregion


                    //optengo los archivos adjuntos
                    MensajeInfo.list_Archivos_Adjuntos = OdataArchivoAdjunto.Lista_ArchivoAdjunto_Mensaje_x_comprobante(MensajeInfo.IdMensaje, ref mensajeErrorOut);
                    foreach (var item in MensajeInfo.list_Archivos_Adjuntos)
                    {
                        comprobante = new tb_Comprobante_Info();
                        comprobante = Bus_Comprobante_emisor.Comprobante_consulta_Id_Comprobante(item.IdEmpresa, item.IdComprobante, ref mensajeError);

                        byte[] BinarioFileAdjunto = null;



                        if (comprobante.IdComprobante != null)
                        {
                            // si la extencion ex .pdf lo creo en el tmp
                            if (item.extensionArchivo.ToUpper() == ".PDF")
                            {
                                XtraReport   Reporte      = new XtraReport();
                                Rpt_Ride_bus Rpt_Ride_Bus = new Rpt_Ride_bus(listEmpr);
                                Reporte = Rpt_Ride_Bus.Optener_reporte(comprobante, ref mensajeError);
                                //pdf
                                FileStream FileBinary;
                                FileBinary = new FileStream(RutaArchivos + "\\" + comprobante.IdComprobante + ".pdf", FileMode.Create);
                                DevExpress.XtraPrinting.PdfExportOptions Optione = new DevExpress.XtraPrinting.PdfExportOptions();
                                Reporte.ExportToPdf(FileBinary, Optione);
                                FileBinary.Close();
                                // lleno la clase archivo adjunto con el pdf que se creo en el tmp
                                DirectoryInfo   Directorio_Pdf_Xml = new DirectoryInfo(RutaArchivos);
                                List <FileInfo> listaFiles         = Directorio_Pdf_Xml.GetFiles(comprobante.IdComprobante + ".pdf").ToList();
                                foreach (var itemBi in listaFiles)
                                {
                                    FileStream file = new FileStream(RutaArchivos + itemBi.Name, FileMode.Open);
                                    BinarioFileAdjunto = new byte[file.Length];

                                    file.Read(BinarioFileAdjunto, 0, Convert.ToInt32(file.Length));
                                    file.Close();
                                }
                            }
                        }

                        // LLENO EL BINARIO PARA EL XML
                        if (item.extensionArchivo.ToUpper() == ".XML")
                        {
                            XmlDocument xmlOrigen = new XmlDocument();
                            xmlOrigen.Load(new StringReader(comprobante.s_XML));
                            BinarioFileAdjunto = Encoding.UTF8.GetBytes(xmlOrigen.OuterXml);
                        }


                        oSmtpMail_msg.AddAttachment(item.IdComprobante + item.extensionArchivo, BinarioFileAdjunto);
                    }
                }


                tipo_conex_cifrada_smtp = InfoCtaMail_Remitente.tipo_Seguridad;

                if (InfoCtaMail_Remitente.tipo_Seguridad != "Ninguno")
                {
                    oSmtpServer.User     = InfoCtaMail_Remitente.Usuario;
                    oSmtpServer.Password = InfoCtaMail_Remitente.Password;
                }


                switch (tipo_conex_cifrada_smtp)
                {
                case "SSL":
                    oSmtpServer.ConnectType = SmtpConnectType.ConnectSSLAuto;
                    oSmtpServer.Port        = 465;
                    break;

                case "TLS":
                    oSmtpServer.ConnectType = SmtpConnectType.ConnectSSLAuto;
                    break;

                case "Ninguno":
                    oSmtpServer.ConnectType = SmtpConnectType.ConnectNormal;
                    break;

                case "STARTTLS":
                    oSmtpServer.ConnectType = SmtpConnectType.ConnectSTARTTLS;
                    break;

                default:
                    oSmtpServer.ConnectType = SmtpConnectType.ConnectNormal;
                    break;
                }



                oSmtpMail_msg.To.Add(new EASendMail.MailAddress(MensajeInfo.Para));

                if (MensajeInfo.Para_CC != "" && MensajeInfo.Para_CC != null)
                {
                    string[] slistaCorreo = MensajeInfo.Para_CC.Split(';');

                    foreach (var item in slistaCorreo)
                    {
                        oSmtpMail_msg.Cc.Add(new EASendMail.MailAddress(item.Trim()));
                    }
                }

                oSmtpMail_msg.From     = new EASendMail.MailAddress(InfoCtaMail_Remitente.direccion_correo);
                oSmtpMail_msg.Subject  = MensajeInfo.Asunto;
                oSmtpMail_msg.TextBody = MensajeInfo.Texto_mensaje;



                SConfigCta = "msg.From :" + oSmtpMail_msg.From.ToString() + "\n";
                SConfigCta = SConfigCta + " msg.To:" + oSmtpMail_msg.To.ToString() + "\n";
                SConfigCta = SConfigCta + " msg.Subject " + oSmtpMail_msg.Subject.ToString() + "\n";
                SConfigCta = SConfigCta + "msg.Body :" + oSmtpMail_msg.TextBody.ToString() + "\n";
                SConfigCta = SConfigCta + "oSmtpServer.Port:" + oSmtpServer.Port.ToString() + "\n";
                SConfigCta = SConfigCta + " oSmtpServer.User:"******"\n";
                SConfigCta = SConfigCta + " oSmtpServer.Password:"******"\n";
                SConfigCta = SConfigCta + " oSmtpServer.Protocol :" + oSmtpServer.Protocol + "\n";

                if (MensajeInfo.Para == "")
                {
                    mensajeErrorOut = "No hay cuenta de correo a quien enviar ";
                    return(false);
                }

                //enviando correo

                oclienteSmtp.SendMail(oSmtpServer, oSmtpMail_msg);

                if (MensajeInfo.IdMensaje > 0)// modificar
                {
                    MensajeInfo.IdTipo_Mensaje = eTipoMail.Enviado;
                    datamaMail.Actualizar_TipoMensaje(MensajeInfo, ref mensajeErrorOut);
                }
                else
                {
                    MensajeInfo.IdTipo_Mensaje = eTipoMail.Enviado;
                    datamaMail.GrabarMensajeDB(MensajeInfo, ref mensajeErrorOut);
                }

                return(true);
            }
            catch (Exception ex)
            {
                mensajeErrorOut = "catch (SmtpException ex) : " + ex.Message + " " + ex.InnerException + " datos de la cta:" + SConfigCta;
                return(false);
            }
        }