Esempio n. 1
0
        /// <summary>
        /// send report as email
        /// </summary>
        public Boolean SendEmail(string AEmailAddresses,
                                 bool AAttachExcelFile,
                                 bool AAttachCSVFile,
                                 bool AAttachPDF,
                                 bool AWrapColumn,
                                 out TVerificationResultCollection AVerification)
        {
            TSmtpSender EmailSender = new TSmtpSender();

            AVerification = new TVerificationResultCollection();

            if (!EmailSender.ValidateEmailConfiguration())
            {
                AVerification.Add(new TVerificationResult(
                                      Catalog.GetString("Sending Email"),
                                      Catalog.GetString("Missing configuration for sending emails. Please edit your server configuration file"),
                                      CommonErrorCodes.ERR_MISSINGEMAILCONFIGURATION,
                                      TResultSeverity.Resv_Critical,
                                      new System.Guid()));
                return(false);
            }

            List <string> FilesToAttach = new List <string>();

            if (AAttachExcelFile)
            {
                string ExcelFile = TFileHelper.GetTempFileName(
                    FParameterList.Get("currentReport").ToString(),
                    ".xlsx");

                if (ExportToExcelFile(ExcelFile))
                {
                    FilesToAttach.Add(ExcelFile);
                }
            }

            if (AAttachCSVFile)
            {
                string CSVFile = TFileHelper.GetTempFileName(
                    FParameterList.Get("currentReport").ToString(),
                    ".csv");

                if (ExportToCSVFile(CSVFile))
                {
                    FilesToAttach.Add(CSVFile);
                }
            }

            if (AAttachPDF)
            {
                string PDFFile = TFileHelper.GetTempFileName(
                    FParameterList.Get("currentReport").ToString(),
                    ".pdf");

                if (PrintToPDF(PDFFile, AWrapColumn))
                {
                    FilesToAttach.Add(PDFFile);
                }
            }

            if (FilesToAttach.Count == 0)
            {
                AVerification.Add(new TVerificationResult(
                                      Catalog.GetString("Sending Email"),
                                      Catalog.GetString("Missing any attachments, not sending the email"),
                                      "Missing Attachments",
                                      TResultSeverity.Resv_Critical,
                                      new System.Guid()));
                return(false);
            }

            // TODO use the email address of the user, from s_user
            if (EmailSender.SendEmail("<" + TAppSettingsManager.GetValue("Reports.Email.Sender") + ">",
                                      "OpenPetra Reports",
                                      AEmailAddresses,
                                      FParameterList.Get("currentReport").ToString(),
                                      Catalog.GetString("Please see attachment!"),
                                      FilesToAttach.ToArray()))
            {
                foreach (string file in FilesToAttach)
                {
                    File.Delete(file);
                }

                return(true);
            }

            AVerification.Add(new TVerificationResult(
                                  Catalog.GetString("Sending Email"),
                                  Catalog.GetString("Problem sending email"),
                                  "server problems",
                                  TResultSeverity.Resv_Critical,
                                  new System.Guid()));

            return(false);
        }