// Monta os arquivos em disco, devolve uma lista com os nomes dos arquivos de relatório private static List <String> BuildReportFiles(String reportPage, String additionalParameters) { List <String> reportFiles = new List <String>(); // Muda o diretório corrente para o lugar onde está o executável Environment.CurrentDirectory = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location.ToString()); // Obtem um identificador para o relatório (temporal) String reportStamp = DateTime.Now.Ticks.ToString(); // Grava em disco o relatório no formato HTML String reportUrl = "http://" + primaryServer + "/Contratos/Frontend/mailing/" + reportPage; String requestParams = "startDate=&" + "endDate=&" + "acrescimo=&" + "obs=&" + additionalParameters; // Sem a faixa de datas recupera as duas últimas leituras RequestHandler requestHandler = new RequestHandler(reportUrl, new TraceHandler()); requestHandler.StartRequest(requestParams, null); String response = (String)requestHandler.ParseResponse(typeof(System.String)); String reportFilename = "Report" + reportStamp + ".htm"; if (!File.Exists(reportFilename)) { StreamWriter streamWriter = File.CreateText(reportFilename); streamWriter.Write(response); streamWriter.Close(); } // Adiciona os nomes dos arquivos a lista reportFiles.Add(reportFilename); return(reportFiles); }
// Monta os arquivos em disco, devolve uma lista com os nomes dos arquivos de relatório private static List<String> BuildReportFiles(String reportPage, String additionalParameters) { List<String> reportFiles = new List<String>(); // Muda o diretório corrente para o lugar onde está o executável Environment.CurrentDirectory = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location.ToString()); // Obtem um identificador para o relatório (temporal) String reportStamp = DateTime.Now.Ticks.ToString(); // Grava em disco o relatório no formato HTML String reportUrl = "http://" + primaryServer + "/Contratos/Frontend/mailing/" + reportPage; String requestParams = "startDate=&" + "endDate=&" + "acrescimo=&" + "obs=&" + additionalParameters; // Sem a faixa de datas recupera as duas últimas leituras RequestHandler requestHandler = new RequestHandler(reportUrl, new TraceHandler()); requestHandler.StartRequest(requestParams, null); String response = (String)requestHandler.ParseResponse(typeof(System.String)); String reportFilename = "Report" + reportStamp + ".htm"; if (!File.Exists(reportFilename)) { StreamWriter streamWriter = File.CreateText(reportFilename); streamWriter.Write(response); streamWriter.Close(); } // Adiciona os nomes dos arquivos a lista reportFiles.Add(reportFilename); return reportFiles; }
private static void SendMailing(DataConnector connector, MailingDTO mailing, SmtpServerDTO server) { MailMessage mailMessage = null; if (mailing.codigoContrato == 0) mailMessage = MountBusinessPartnerBilling(connector, mailing.businessPartnerCode, mailing.enviarDemonstrativo); else mailMessage = MountContractBilling(connector, mailing.codigoContrato, mailing.codigoSubContrato, mailing.enviarDemonstrativo); List<String> reportFiles = null; if (mailing.enviarDemonstrativo && mailMessage.Attachments.Count > 0) { reportFiles = new List<String>(); foreach (Attachment mailAttachment in mailMessage.Attachments) reportFiles.Add(mailAttachment.Name); } // TODO: Consertar o envio através do .NET, utilizar algum componente que funcione, o SmtpClient // da Microsoft não suporta SSL implicito SmtpServer smtpServer = SmtpServer.ImportFromDTO(server); MailSender mailSender = new MailSender(smtpServer, new TraceHandler()); mailSender.SetContents(mailMessage.Body, reportFiles); Boolean success = mailSender.SendMail("Faturamento de contrato", server.usuario, mailing.destinatarios); if (!success) { // caso não tenha tido sucesso ao enviar através do SmtpClient do .NET tenta enviar pelo PHP String mailerUrl = "http://" + primaryServer + "/Contratos/AjaxCalls/SendEmail.php"; String mailerParams = "subject=Faturamento%20de%20contrato&mailBody=" + mailMessage.Body + "&recipients=" + mailing.destinatarios; String aditionalParams = "&fileCount=0"; if (reportFiles != null) { aditionalParams = "&fileCount=" + reportFiles.Count; int fileIndex = 0; foreach (String filename in reportFiles) { aditionalParams += "&filename" + fileIndex + "=" + reportFiles[fileIndex]; aditionalParams += "&path" + fileIndex + "=" + Environment.CurrentDirectory + @"\" + reportFiles[fileIndex]; fileIndex++; } } RequestHandler mailerRequest = new RequestHandler(mailerUrl, new TraceHandler()); mailerRequest.StartRequest(mailerParams + aditionalParams, null); String mailerResponse = (String)mailerRequest.ParseResponse(typeof(System.String)); if (mailerResponse == "Email enviado com sucesso!") success = true; if (!success) EventLog.WriteEntry("Billing Mailer", mailerResponse); } if (success) // e-mail enviado com sucesso, grava no banco de dados a data { MailingDAO mailingDAO = new MailingDAO(connector.MySqlConnection); mailing.ultimoEnvio = DateTime.Now; mailingDAO.SetMailing(mailing); } }
private static void SendMailing(DataConnector connector, MailingDTO mailing, SmtpServerDTO server) { MailMessage mailMessage = null; if (mailing.codigoContrato == 0) { mailMessage = MountBusinessPartnerBilling(connector, mailing.businessPartnerCode, mailing.enviarDemonstrativo); } else { mailMessage = MountContractBilling(connector, mailing.codigoContrato, mailing.codigoSubContrato, mailing.enviarDemonstrativo); } List <String> reportFiles = null; if (mailing.enviarDemonstrativo && mailMessage.Attachments.Count > 0) { reportFiles = new List <String>(); foreach (Attachment mailAttachment in mailMessage.Attachments) { reportFiles.Add(mailAttachment.Name); } } // TODO: Consertar o envio através do .NET, utilizar algum componente que funcione, o SmtpClient // da Microsoft não suporta SSL implicito SmtpServer smtpServer = SmtpServer.ImportFromDTO(server); MailSender mailSender = new MailSender(smtpServer, new TraceHandler()); mailSender.SetContents(mailMessage.Body, reportFiles); Boolean success = mailSender.SendMail("Faturamento de contrato", server.usuario, mailing.destinatarios); if (!success) { // caso não tenha tido sucesso ao enviar através do SmtpClient do .NET tenta enviar pelo PHP String mailerUrl = "http://" + primaryServer + "/Contratos/AjaxCalls/SendEmail.php"; String mailerParams = "subject=Faturamento%20de%20contrato&mailBody=" + mailMessage.Body + "&recipients=" + mailing.destinatarios; String aditionalParams = "&fileCount=0"; if (reportFiles != null) { aditionalParams = "&fileCount=" + reportFiles.Count; int fileIndex = 0; foreach (String filename in reportFiles) { aditionalParams += "&filename" + fileIndex + "=" + reportFiles[fileIndex]; aditionalParams += "&path" + fileIndex + "=" + Environment.CurrentDirectory + @"\" + reportFiles[fileIndex]; fileIndex++; } } RequestHandler mailerRequest = new RequestHandler(mailerUrl, new TraceHandler()); mailerRequest.StartRequest(mailerParams + aditionalParams, null); String mailerResponse = (String)mailerRequest.ParseResponse(typeof(System.String)); if (mailerResponse == "Email enviado com sucesso!") { success = true; } if (!success) { EventLog.WriteEntry("Billing Mailer", mailerResponse); } } if (success) // e-mail enviado com sucesso, grava no banco de dados a data { MailingDAO mailingDAO = new MailingDAO(connector.MySqlConnection); mailing.ultimoEnvio = DateTime.Now; mailingDAO.SetMailing(mailing); } }