/// send an email to the applicant and the registration office public static bool SendEmail(Int64 APartnerKey, string ACountryCode, TApplicationFormData AData, string APDFFilename) { string FileName = TFormLettersTools.GetRoleSpecificFile(TAppSettingsManager.GetValue("Formletters.Path"), "ApplicationReceivedEmail", AData.registrationcountrycode, AData.formsid, "html"); string HTMLText = string.Empty; string SenderAddress = string.Empty; string BCCAddress = string.Empty; string EmailSubject = string.Empty; if (!File.Exists(FileName)) { HTMLText = "<html><body>" + String.Format("Cannot find file {0}", FileName) + "</body></html>"; } else { StreamReader r = new StreamReader(FileName); SenderAddress = r.ReadLine(); BCCAddress = r.ReadLine(); EmailSubject = r.ReadLine(); HTMLText = r.ReadToEnd(); r.Close(); } if (!SenderAddress.StartsWith("From: ")) { throw new Exception("missing From: line in the Email template " + FileName); } if (!BCCAddress.StartsWith("BCC: ")) { throw new Exception("missing BCC: line in the Email template " + FileName); } if (!EmailSubject.StartsWith("Subject: ")) { throw new Exception("missing Subject: line in the Email template " + FileName); } SenderAddress = SenderAddress.Substring("From: ".Length); BCCAddress = BCCAddress.Substring("BCC: ".Length); EmailSubject = EmailSubject.Substring("Subject: ".Length); HTMLText = TJsonTools.ReplaceKeywordsWithData(AData.RawData, HTMLText); HTMLText = HTMLText.Replace("#HTMLRAWDATA", TJsonTools.DataToHTMLTable(AData.RawData)); // load the language file for the specific country Catalog.Init(ACountryCode, ACountryCode); // send email TSmtpSender emailSender = new TSmtpSender(); MailMessage msg = new MailMessage(SenderAddress, AData.email, EmailSubject, HTMLText); msg.Attachments.Add(new Attachment(APDFFilename, System.Net.Mime.MediaTypeNames.Application.Octet)); msg.Bcc.Add(BCCAddress); if (!emailSender.SendMessage(msg)) { TLogging.Log("There has been a problem sending the email to " + AData.email); return(false); } return(true); }
public static String ExportToIntranet(Boolean AExportDonationData, Boolean AExportFieldData, Boolean AExportPersonData, String AServerEmailAddress, String APswd, Int32 ADaySpan, String AOptionalMetadata, String ReplyToEmail) { try { FZipFileNames.Clear(); FExportFilePath = TAppSettingsManager.GetValue("OpenPetra.PathTemp") + @"\"; FExportTrace = "Exporting (Temporary path: " + FExportFilePath + ")\r\n"; FTransaction = DBAccess.GDBAccessObj.BeginTransaction(IsolationLevel.ReadCommitted); if (AExportDonationData) { ExportDonations(ADaySpan); AddZipFile("donor.csv"); AddZipFile("donation.csv"); AddZipFile("recipient.csv"); } if (AExportFieldData) { if (ExportField()) { AddZipFile("field.csv"); } } if (AExportPersonData) { ExportPersonnel(); AddZipFile("position.csv"); AddZipFile("person.csv"); AddZipFile("email.csv"); } ExportMetadata(AOptionalMetadata, APswd); AddZipFile("metadata.csv"); MemoryStream ZippedStream = TFileHelper.Streams.Compression.DeflateFilesIntoMemoryStream(FZipFileNames.ToArray(), false, ""); TFileHelper.Streams.FileHandling.SaveStreamToFile(ZippedStream, FExportFilePath + "data.zip"); FExportTrace += "\r\nFiles compressed to " + FExportFilePath + "data.zip."; if (EncryptUsingPublicKey("data.zip", AServerEmailAddress)) { TSmtpSender SendMail = new TSmtpSender( TUserDefaults.GetStringDefault("SmtpHost"), TUserDefaults.GetInt16Default("SmtpPort"), TUserDefaults.GetBooleanDefault("SmtpUseSsl"), TUserDefaults.GetStringDefault("SmtpUser"), TUserDefaults.GetStringDefault("SmtpPassword"), ""); String SenderAddress = ReplyToEmail; MailMessage msg = new MailMessage(SenderAddress, AServerEmailAddress, "Data from OpenPetra", "Here is the latest data from my field."); msg.Attachments.Add(new Attachment(FExportFilePath + "data.zip.gpg")); if (SendMail.SendMessage(msg)) { FExportTrace += ("\r\nEmail sent to " + msg.To[0].Address); } else { FExportTrace += ("\r\nNo Email was sent."); } msg.Dispose(); // If I don't call this, the attached files are still locked! } else { FExportTrace += "\r\nError: Data encryption failed."; } } catch (Exception e) { FExportTrace += ("\r\nException: " + e.Message); } finally { DBAccess.GDBAccessObj.RollbackTransaction(); DeleteTemporaryFiles(); DonorList.Clear(); RecipientList.Clear(); // These lists are static so they'll stick around for ever, // but I don't need to keep the data which is taking up memory. } return(FExportTrace); }