Exemplo n.º 1
0
        public MailObject SP_ObtieneMailConfig(string ruc)
        {
            MailObject    MO        = new MailObject();
            List <string> Documents = new List <string>();

            try
            {
                using (SqlConnection con = new SqlConnection(BDCon))
                {
                    using (SqlCommand cmd = new SqlCommand("[Fact].[Usp_GetCredencialEntitySend]", con))
                    {
                        SqlDataReader dr;
                        cmd.CommandType = CommandType.StoredProcedure;
                        cmd.Parameters.AddWithValue("@RucEmpresa", ruc);
                        con.Open();
                        dr = cmd.ExecuteReader();
                        while (dr.Read())
                        {
                            MO.RUC       = dr[0].ToString().Trim();
                            MO.EMAIL     = dr[1].ToString().Trim();
                            MO.PASSWORD  = dr[2].ToString().Trim();
                            MO.DOMAIN    = dr[3].ToString().Trim();
                            MO.IP        = dr[4].ToString().Trim();
                            MO.PORT      = dr[5].ToString().Trim();
                            MO.USESSL    = dr[6].ToString().Trim();
                            MO.MAILNOTIF = dr[7].ToString().Trim();
                            con.Close();
                            return(MO);
                        }
                        con.Close();
                    }
                }
            }
            catch (SqlException ex)
            {
                Log.WriteLine("[error] " + ex.Message);
            }
            return(MO);
        }
Exemplo n.º 2
0
        public bool SendMail(List <DocumentsPending> PendingDocuments)
        {
            bool      env  = false;
            string    html = "";
            Encrypter EC   = new Encrypter();

            try
            {
                MailObject MO = new MailObject();
                MO = MS.SP_ObtieneMailConfig(SR.RucEntity);

                if (MO.EMAIL == "" || MO.PASSWORD == "" || MO.DOMAIN == "" || MO.PORT == "")
                {
                    Log.WriteLine("No se ha configurado correctamente el correo de envío."); return(false);
                }
                if (MO.MAILNOTIF == "")
                {
                    Log.WriteLine("No se han configurado los correos de destino para la notificación."); return(false);
                }

                MailMessage mail       = new MailMessage();
                SmtpClient  SmtpServer = new SmtpClient(MO.DOMAIN);

                mail.From = new MailAddress(MO.EMAIL);
                //mail.To.Add(MO.MAILNOTIF);
                Log.WriteLine("Se enviará a los siguientes correos: " + MO.MAILNOTIF);

                foreach (var address in MO.MAILNOTIF.Split(new[] { ";" }, StringSplitOptions.RemoveEmptyEntries))
                {
                    mail.To.Add(address);
                }

                mail.Subject = "[SLIN-ADE] Documentos Electrónicos pendientes de envío a Sunat al " + DateTime.Now.ToString("dd-MM-yyyy");

                html = "<html>Estimado cliente: <h4>" + PendingDocuments[0].RZN + "</h4><br>A continuación se muestra un listado de documentos electrónicos sobre los cuales se debe tomar una acción, ya que no tienen un estado final y se encuentran aún en proceso.<body lang=\"es-pe\"><br><table border=\"1\" cellpadding=\"0\" cellspacing=\"0\" border=\"1\">" +
                       //"<tbody>" +
                       "<tr>" +
                       "<th width =\"50\" align=\"center\" bgcolor=\"263B8E\">" +
                       "<font size =\"3\" color=\"ffffff\"><b> Nro.</b></font>" +
                       "</th>" +
                       "<th width =\"80\" align=\"center\" bgcolor=\"263B8E\">" +
                       "<font size =\"3\" color=\"ffffff\"><b> Fecha</b></font>" +
                       "</th>" +
                       "<th width =\"220\" align=\"center\" bgcolor=\"263B8E\">" +
                       "<font size =\"3\" color=\"ffffff\"><b> Documento Electrónico</b></font>" +
                       "</th>" +
                       //"<th width =\"80\" align=\"center\" bgcolor=\"263B8E\">" +
                       //    "<font size =\"3\" color=\"ffffff\"><b> Monto</b></font>" +
                       //"</th>" +
                       "<th width =\"190\" align=\"center\" bgcolor=\"263B8E\">" +
                       "<font size =\"3\" color=\"ffffff\"><b> Estado</b></font>" +
                       "</th>" +
                       "</tr>";
                //"</tbody>" +
                //"</table>" +
                //"<table border=\"1\">" +
                //"<tbody>";
                int index = 1;
                foreach (DocumentsPending DP in PendingDocuments)
                {
                    //html += "<tr>" +
                    html += "<tr>" +
                            " <td width =\"50\" align=\"center\" bgcolor=\"\">" +
                            $"<font size =\"2\" color=\"\"><b>{index}</b></font>" +
                            "</td>" +
                            " <td width =\"80\" align=\"center\" bgcolor=\"\">" +
                            $"<font size =\"2\" color=\"\"><b>{DP.FEC.ToString("dd-MM-yyyy")}</b></font>" +
                            "</td>" +
                            "<td width =\"220\" align=\"center\" bgcolor=\"\">" +
                            $"<font size =\"2\" color=\"\"><b>{DP.CPE}</b></font>" +
                            "</td>" +
                            //"<td width =\"80\" align=\"right\" bgcolor=\"\">" +
                            //    $"<font size =\"2\" color=\"\"><b>{DP.TOT}</b></font>" +
                            //"</td>" +
                            "<td width =\"190\" align=\"center\" bgcolor=\"\">" +
                            $"<font size =\"2\" color=\"\"><b>{DP.EST}</b></font>" +
                            "</td>" +
                            "</tr>";
                    index++;
                }

                //html += "</tbody>" +
                html += "</table></body><br>SLIN-ADE<br><hr>Nota: Tener en consideración la fecha de procesamiento de máximo (07) días, considerados desde el día siguiente de la fecha de emisión que figure en el documento electrónico. De tener algún inconveniente puede comunicarse con el área respectiva.</hr></html>";


                mail.Body       = html;
                mail.IsBodyHtml = true;
                SmtpServer.Port = int.Parse(MO.PORT);
                //if(SR.RucEntity == "20101071562" || SR.RucEntity == "20106896276")
                //{
                //    SmtpServer.Credentials = CredentialCache.DefaultNetworkCredentials;
                //}
                //else
                //{
                SmtpServer.Credentials = new System.Net.NetworkCredential(MO.EMAIL, EC.DecryptKey(MO.PASSWORD));
                //}

                if (MO.USESSL == "1")
                {
                    SmtpServer.EnableSsl = true;
                }

                SmtpServer.Send(mail);
                env = true;
            }
            catch (Exception e) {
                Log.WriteLine("Error al enviar Correo: " + e.Message);
            }
            return(env);
        }