Email Notifications System
/// <summary> /// Notifications system /// </summary> /// <returns>Result object</returns> private Result NotificationsSystem() { // Auxiliary variables DataTable _dtRecords; Result _Result = new Result(); // Get results from database _dtRecords = GetResults(); // Check success if (_dtRecords != null && _dtRecords.Rows.Count > 0) { // Load email template file path string _strEmailTemplate = LoadEmailTemplate(); // Check email template path is not null if (string.IsNullOrEmpty(_strEmailTemplate)) { // Add error message _Result.AddError("Undefined email template!"); // Return return _Result; } // Check if template file exists if (!File.Exists(_strEmailTemplate)) { // Add error message _Result.AddError("Email template doesn't exist!"); // Return return _Result; } // Load excel directory path string _strExcelFilesPath = LoadExcelFilesPath(); // Check if directory exists if (!Directory.Exists(Path.GetDirectoryName(_strExcelFilesPath))) { // Create directory Directory.CreateDirectory(Path.GetDirectoryName(_strExcelFilesPath)); } // Load recipient emails list List<string> _lstRecipientEmails = LoadRecipientEmailsList(); // Check if list are undefined if (_lstRecipientEmails == null || !_lstRecipientEmails.Any()) { // Add error message _Result.AddError("Undefined recipient!"); // Return return _Result; } // Generate excel file name string _strExcelFileName = Path.Combine(_strExcelFilesPath, string.Concat(Path.GetFileNameWithoutExtension(_strEmailTemplate), "_", Guid.NewGuid().ToString(), ".xlsx")); // Create excel file bool _blSuccess = ClExcel.CreateExcelFileFromDataTable(_dtRecords, _strExcelFileName); // Check success if (!_blSuccess) { // Add error message _Result.AddError("Error while creating the Excel file!"); // Return return _Result; } // Send email SendEmail(_lstRecipientEmails, _strEmailTemplate, _strExcelFileName); } else { // Add info message _Result.AddInfo("No data is available!"); // Return return _Result; } // Return return _Result; } /// <summary> /// Send email /// </summary> /// <param name="_lstRecipientEmails">Recipient emails list</param> /// <param name="_strEmailTemplate">Email template</param> /// <param name="_strExcelFileName">Excel file name</param> void SendEmail(List<string> _lstRecipientEmails, string _strEmailTemplate, string _strExcelFileName) { // Email configurations string _strFrom = "FromEmail@gmail.com"; string _strFromPassword = "FromPassword"; // Create email message MailMessage _Message = new MailMessage(); // Set from address _Message.From = new MailAddress(_strFrom); // Set subject _Message.Subject = "Subject Message!"; // Set recipient list foreach (string item in _lstRecipientEmails) _Message.To.Add(new MailAddress(item)); // Set body message (email template file _Message.Body = File.ReadAllText(_strEmailTemplate, Encoding.Default); _Message.IsBodyHtml = true; // Set attachment (Excel file) _Message.Attachments.Add(new Attachment(_strExcelFileName)); // STMP configurations SmtpClient smtpClient = new SmtpClient("smtp.gmail.com") { Port = 587, Credentials = new System.Net.NetworkCredential(_strFrom, _strFromPassword), EnableSsl = true }; // Send email smtpClient.Send(_Message); } /// <summary> /// Get results from database /// </summary> /// <returns>Data table with the query results</returns> DataTable GetResults() { // Getting data from database should be implemented } /// <summary> /// Load email template /// </summary> /// <returns>String with the email template path</returns> string LoadEmailTemplate() { // Getting the configuration of the email template must be implemented (.html file) } /// <summary> /// Load Excel files path /// </summary> /// <returns>String with the Excel files directory</returns> string LoadExcelFilesPath() { // Getting the configuration of Excel files path must be implemented } /// <summary> /// Load recipient emails list /// </summary> /// <returns>List of recipient emails list</returns> List<string> LoadRecipientEmailsList() { // Getting the recipient emails list must be implemented }