From 52b5033e5f24e516ec1d1e89b558c0da8773ebf0 Mon Sep 17 00:00:00 2001
From: MOHAN CHANDRAN <93247949+Mohan2401@users.noreply.github.com>
Date: Thu, 6 Jul 2023 17:27:53 +0530
Subject: [PATCH 1/2] Income tax email distribution sample
---
.../IncomeTaxEmailDistribution.sln | 25 +++
.../IncomeTaxEmailDistribution/App.config | 18 ++
.../Form1.Designer.cs | 178 ++++++++++++++++++
.../IncomeTaxEmailDistribution/Form1.cs | 155 +++++++++++++++
.../IncomeTaxEmailDistribution/Form1.resx | 120 ++++++++++++
.../IncomeTaxEmailDistribution.csproj | 128 +++++++++++++
.../IncomeTaxEmailDistribution/Program.cs | 22 +++
.../Properties/AssemblyInfo.cs | 36 ++++
.../Properties/Resources.Designer.cs | 71 +++++++
.../Properties/Resources.resx | 117 ++++++++++++
.../Properties/Settings.Designer.cs | 30 +++
.../Properties/Settings.settings | 7 +
.../packages.config | 13 ++
13 files changed, 920 insertions(+)
create mode 100644 Real Time Examples in Excel/IncomeTaxEmailDistribution/IncomeTaxEmailDistribution.sln
create mode 100644 Real Time Examples in Excel/IncomeTaxEmailDistribution/IncomeTaxEmailDistribution/App.config
create mode 100644 Real Time Examples in Excel/IncomeTaxEmailDistribution/IncomeTaxEmailDistribution/Form1.Designer.cs
create mode 100644 Real Time Examples in Excel/IncomeTaxEmailDistribution/IncomeTaxEmailDistribution/Form1.cs
create mode 100644 Real Time Examples in Excel/IncomeTaxEmailDistribution/IncomeTaxEmailDistribution/Form1.resx
create mode 100644 Real Time Examples in Excel/IncomeTaxEmailDistribution/IncomeTaxEmailDistribution/IncomeTaxEmailDistribution.csproj
create mode 100644 Real Time Examples in Excel/IncomeTaxEmailDistribution/IncomeTaxEmailDistribution/Program.cs
create mode 100644 Real Time Examples in Excel/IncomeTaxEmailDistribution/IncomeTaxEmailDistribution/Properties/AssemblyInfo.cs
create mode 100644 Real Time Examples in Excel/IncomeTaxEmailDistribution/IncomeTaxEmailDistribution/Properties/Resources.Designer.cs
create mode 100644 Real Time Examples in Excel/IncomeTaxEmailDistribution/IncomeTaxEmailDistribution/Properties/Resources.resx
create mode 100644 Real Time Examples in Excel/IncomeTaxEmailDistribution/IncomeTaxEmailDistribution/Properties/Settings.Designer.cs
create mode 100644 Real Time Examples in Excel/IncomeTaxEmailDistribution/IncomeTaxEmailDistribution/Properties/Settings.settings
create mode 100644 Real Time Examples in Excel/IncomeTaxEmailDistribution/IncomeTaxEmailDistribution/packages.config
diff --git a/Real Time Examples in Excel/IncomeTaxEmailDistribution/IncomeTaxEmailDistribution.sln b/Real Time Examples in Excel/IncomeTaxEmailDistribution/IncomeTaxEmailDistribution.sln
new file mode 100644
index 00000000..bdffa64c
--- /dev/null
+++ b/Real Time Examples in Excel/IncomeTaxEmailDistribution/IncomeTaxEmailDistribution.sln
@@ -0,0 +1,25 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio Version 17
+VisualStudioVersion = 17.6.33513.286
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "IncomeTaxEmailDistribution", "IncomeTaxEmailDistribution\IncomeTaxEmailDistribution.csproj", "{BF7DAB0E-A946-4FBF-BDAD-18D931F765F5}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Any CPU = Debug|Any CPU
+ Release|Any CPU = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {BF7DAB0E-A946-4FBF-BDAD-18D931F765F5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {BF7DAB0E-A946-4FBF-BDAD-18D931F765F5}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {BF7DAB0E-A946-4FBF-BDAD-18D931F765F5}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {BF7DAB0E-A946-4FBF-BDAD-18D931F765F5}.Release|Any CPU.Build.0 = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+ GlobalSection(ExtensibilityGlobals) = postSolution
+ SolutionGuid = {2CFFE45B-05F9-4BB8-A78D-771BEA77D8C8}
+ EndGlobalSection
+EndGlobal
diff --git a/Real Time Examples in Excel/IncomeTaxEmailDistribution/IncomeTaxEmailDistribution/App.config b/Real Time Examples in Excel/IncomeTaxEmailDistribution/IncomeTaxEmailDistribution/App.config
new file mode 100644
index 00000000..5806b855
--- /dev/null
+++ b/Real Time Examples in Excel/IncomeTaxEmailDistribution/IncomeTaxEmailDistribution/App.config
@@ -0,0 +1,18 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Real Time Examples in Excel/IncomeTaxEmailDistribution/IncomeTaxEmailDistribution/Form1.Designer.cs b/Real Time Examples in Excel/IncomeTaxEmailDistribution/IncomeTaxEmailDistribution/Form1.Designer.cs
new file mode 100644
index 00000000..45a025c9
--- /dev/null
+++ b/Real Time Examples in Excel/IncomeTaxEmailDistribution/IncomeTaxEmailDistribution/Form1.Designer.cs
@@ -0,0 +1,178 @@
+namespace IncomeTaxEmailDistribution
+{
+ partial class Form1
+ {
+ ///
+ /// Required designer variable.
+ ///
+ private System.ComponentModel.IContainer components = null;
+
+ ///
+ /// Clean up any resources being used.
+ ///
+ /// true if managed resources should be disposed; otherwise, false.
+ protected override void Dispose(bool disposing)
+ {
+ if (disposing && (components != null))
+ {
+ components.Dispose();
+ }
+ base.Dispose(disposing);
+ }
+
+ #region Windows Form Designer generated code
+
+ ///
+ /// Required method for Designer support - do not modify
+ /// the contents of this method with the code editor.
+ ///
+ private void InitializeComponent()
+ {
+ this.EmailSendButton = new System.Windows.Forms.Button();
+ this.excelPathTxtBox = new System.Windows.Forms.TextBox();
+ this.partAPathTxtBox = new System.Windows.Forms.TextBox();
+ this.partBPathTxtBox = new System.Windows.Forms.TextBox();
+ this.ExcelPathLabel = new System.Windows.Forms.Label();
+ this.PartAPathLabel = new System.Windows.Forms.Label();
+ this.PartBPathLabel = new System.Windows.Forms.Label();
+ this.label1 = new System.Windows.Forms.Label();
+ this.label2 = new System.Windows.Forms.Label();
+ this.panColumnIdTxtBox = new System.Windows.Forms.TextBox();
+ this.emailColumnIdTxtBox = new System.Windows.Forms.TextBox();
+ this.SuspendLayout();
+ //
+ // EmailSendButton
+ //
+ this.EmailSendButton.Font = new System.Drawing.Font("Calibri", 10.2F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+ this.EmailSendButton.Location = new System.Drawing.Point(309, 332);
+ this.EmailSendButton.Name = "EmailSendButton";
+ this.EmailSendButton.Size = new System.Drawing.Size(140, 42);
+ this.EmailSendButton.TabIndex = 0;
+ this.EmailSendButton.Text = "Send Mails";
+ this.EmailSendButton.UseVisualStyleBackColor = true;
+ this.EmailSendButton.Click += new System.EventHandler(this.button1_Click);
+ //
+ // excelPathTxtBox
+ //
+ this.excelPathTxtBox.Location = new System.Drawing.Point(240, 162);
+ this.excelPathTxtBox.Name = "excelPathTxtBox";
+ this.excelPathTxtBox.Size = new System.Drawing.Size(403, 22);
+ this.excelPathTxtBox.TabIndex = 1;
+ //
+ // partAPathTxtBox
+ //
+ this.partAPathTxtBox.Location = new System.Drawing.Point(240, 210);
+ this.partAPathTxtBox.Name = "partAPathTxtBox";
+ this.partAPathTxtBox.Size = new System.Drawing.Size(403, 22);
+ this.partAPathTxtBox.TabIndex = 2;
+ //
+ // partBPathTxtBox
+ //
+ this.partBPathTxtBox.Location = new System.Drawing.Point(240, 255);
+ this.partBPathTxtBox.Name = "partBPathTxtBox";
+ this.partBPathTxtBox.Size = new System.Drawing.Size(403, 22);
+ this.partBPathTxtBox.TabIndex = 3;
+ //
+ // ExcelPathLabel
+ //
+ this.ExcelPathLabel.AutoSize = true;
+ this.ExcelPathLabel.Font = new System.Drawing.Font("Calibri", 10.2F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+ this.ExcelPathLabel.Location = new System.Drawing.Point(90, 162);
+ this.ExcelPathLabel.Name = "ExcelPathLabel";
+ this.ExcelPathLabel.Size = new System.Drawing.Size(111, 21);
+ this.ExcelPathLabel.TabIndex = 4;
+ this.ExcelPathLabel.Text = "Excel File Path";
+ //
+ // PartAPathLabel
+ //
+ this.PartAPathLabel.AutoSize = true;
+ this.PartAPathLabel.Font = new System.Drawing.Font("Calibri", 10.2F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+ this.PartAPathLabel.Location = new System.Drawing.Point(89, 210);
+ this.PartAPathLabel.Name = "PartAPathLabel";
+ this.PartAPathLabel.Size = new System.Drawing.Size(118, 21);
+ this.PartAPathLabel.TabIndex = 5;
+ this.PartAPathLabel.Text = "Part A File Path";
+ //
+ // PartBPathLabel
+ //
+ this.PartBPathLabel.AutoSize = true;
+ this.PartBPathLabel.Font = new System.Drawing.Font("Calibri", 10.2F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+ this.PartBPathLabel.Location = new System.Drawing.Point(89, 261);
+ this.PartBPathLabel.Name = "PartBPathLabel";
+ this.PartBPathLabel.Size = new System.Drawing.Size(118, 21);
+ this.PartBPathLabel.TabIndex = 6;
+ this.PartBPathLabel.Text = "Part B File Path";
+ //
+ // label1
+ //
+ this.label1.AutoSize = true;
+ this.label1.Font = new System.Drawing.Font("Calibri", 10.2F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+ this.label1.Location = new System.Drawing.Point(89, 115);
+ this.label1.Name = "label1";
+ this.label1.Size = new System.Drawing.Size(124, 21);
+ this.label1.TabIndex = 7;
+ this.label1.Text = "Email Column Id";
+ //
+ // label2
+ //
+ this.label2.AutoSize = true;
+ this.label2.Font = new System.Drawing.Font("Calibri", 10.2F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+ this.label2.Location = new System.Drawing.Point(89, 68);
+ this.label2.Name = "label2";
+ this.label2.Size = new System.Drawing.Size(115, 21);
+ this.label2.TabIndex = 8;
+ this.label2.Text = "PAN Column Id";
+ //
+ // panColumnIdTxtBox
+ //
+ this.panColumnIdTxtBox.Location = new System.Drawing.Point(240, 62);
+ this.panColumnIdTxtBox.Name = "panColumnIdTxtBox";
+ this.panColumnIdTxtBox.Size = new System.Drawing.Size(403, 22);
+ this.panColumnIdTxtBox.TabIndex = 9;
+ //
+ // emailColumnIdTxtBox
+ //
+ this.emailColumnIdTxtBox.Location = new System.Drawing.Point(240, 115);
+ this.emailColumnIdTxtBox.Name = "emailColumnIdTxtBox";
+ this.emailColumnIdTxtBox.Size = new System.Drawing.Size(403, 22);
+ this.emailColumnIdTxtBox.TabIndex = 10;
+ //
+ // Form1
+ //
+ this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 16F);
+ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+ this.ClientSize = new System.Drawing.Size(727, 408);
+ this.Controls.Add(this.emailColumnIdTxtBox);
+ this.Controls.Add(this.panColumnIdTxtBox);
+ this.Controls.Add(this.label2);
+ this.Controls.Add(this.label1);
+ this.Controls.Add(this.PartBPathLabel);
+ this.Controls.Add(this.PartAPathLabel);
+ this.Controls.Add(this.ExcelPathLabel);
+ this.Controls.Add(this.partBPathTxtBox);
+ this.Controls.Add(this.partAPathTxtBox);
+ this.Controls.Add(this.excelPathTxtBox);
+ this.Controls.Add(this.EmailSendButton);
+ this.Name = "Form1";
+ this.Text = "Form1";
+ this.ResumeLayout(false);
+ this.PerformLayout();
+
+ }
+
+ #endregion
+
+ private System.Windows.Forms.Button EmailSendButton;
+ private System.Windows.Forms.TextBox excelPathTxtBox;
+ private System.Windows.Forms.TextBox partAPathTxtBox;
+ private System.Windows.Forms.TextBox partBPathTxtBox;
+ private System.Windows.Forms.Label ExcelPathLabel;
+ private System.Windows.Forms.Label PartAPathLabel;
+ private System.Windows.Forms.Label PartBPathLabel;
+ private System.Windows.Forms.Label label1;
+ private System.Windows.Forms.Label label2;
+ private System.Windows.Forms.TextBox panColumnIdTxtBox;
+ private System.Windows.Forms.TextBox emailColumnIdTxtBox;
+ }
+}
+
diff --git a/Real Time Examples in Excel/IncomeTaxEmailDistribution/IncomeTaxEmailDistribution/Form1.cs b/Real Time Examples in Excel/IncomeTaxEmailDistribution/IncomeTaxEmailDistribution/Form1.cs
new file mode 100644
index 00000000..759d2c09
--- /dev/null
+++ b/Real Time Examples in Excel/IncomeTaxEmailDistribution/IncomeTaxEmailDistribution/Form1.cs
@@ -0,0 +1,155 @@
+using Syncfusion.XlsIO;
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Data;
+using System.Drawing;
+using System.IO;
+using System.Linq;
+using System.Net.Mail;
+using System.Text;
+using System.Threading;
+using System.Threading.Tasks;
+using System.Windows.Forms;
+
+namespace IncomeTaxEmailDistribution
+{
+ public partial class Form1 : Form
+ {
+ public Form1()
+ {
+ InitializeComponent();
+ }
+
+ private void button1_Click(object sender, EventArgs e)
+ {
+ string panColumnId = panColumnIdTxtBox.Text.Trim('"');
+
+ string emailColumnId = emailColumnIdTxtBox.Text.Trim('"');
+
+ string excelFilePath = excelPathTxtBox.Text.Trim('"');
+
+ string[] partAPathFiles = Directory.GetFiles(partAPathTxtBox.Text.Trim('"'));
+
+ string[] partBPathFiles = Directory.GetFiles(partBPathTxtBox.Text.Trim('"'));
+
+ if(partAPathFiles != null && partAPathFiles.Length == 0)
+ {
+ MessageBox.Show("No files found in Part A Path");
+ return;
+ }
+ if(partBPathFiles != null && partBPathFiles.Length == 0)
+ {
+ MessageBox.Show("No files found in Part B Path");
+ return;
+ }
+ if(!File.Exists(excelFilePath))
+ {
+ MessageBox.Show("Excel File not found");
+ return;
+ }
+
+ using(ExcelEngine excelengine = new ExcelEngine())
+ {
+ IApplication application = excelengine.Excel;
+ IWorkbook workbook = application.Workbooks.Open(excelFilePath);
+
+ IWorksheet worksheet = workbook.Worksheets[0];
+
+ IRange used = worksheet.UsedRange;
+
+ int startRow = used.Row + 1;
+ int endRow = used.LastRow;
+
+ for(int row = startRow;row <= endRow;row++)
+ {
+ if (worksheet.Range[row, 10].Value == "Sent")
+ {
+ continue;
+ }
+
+ //Converting the Column Id to Column Index
+ IRange panRange = worksheet[panColumnId + row.ToString()];
+
+ string panID = worksheet.Range[row, panRange.Column].Value;
+
+ if(string.IsNullOrEmpty(panID))
+ {
+ worksheet[row, 10].Value = "PAN not found";
+ continue;
+ }
+
+ IRange emailRange = worksheet[emailColumnId + row.ToString()];
+
+ string emailId = worksheet.Range[row, emailRange.Column].Value;
+
+ string partAPath = partAPathFiles.Where(x => x.Contains(panID + "_")).FirstOrDefault();
+
+ if (partAPath == null)
+ {
+ worksheet[row, 10].Value = "Part A File not found";
+ continue;
+ }
+
+ string partBPath = partBPathFiles.Where(x => x.Contains(panID + "_")).FirstOrDefault();
+
+ if (partBPath == null)
+ {
+ worksheet[row, 10].Value = "Part B File not found";
+ continue;
+ }
+ try
+ {
+ //Your maid id
+ string from = "Yourmail@abc.com";
+
+ string subject = "Form 16 for the financial year 2022- 2023";
+
+ string mailBody = "
Hi,
\r\nThank you for your kind cooperation
\r\nWe have attached the form 16 document pertaining to the financial year (2022-2023) tax deduction. Employees are requested to review and file their Income tax return before due date.
\r\nThe last date of filing of Income Tax return is July 31, 2023.
\r\nFor further assistance, please feel free to get back to us.
\r\nThanks and Regards,
\r\nAccounts Team.
";
+
+ SendEMail(from, emailId, subject, mailBody, partAPath, partBPath);
+
+ worksheet[row, 10].Value = "Sent";
+ }
+ catch(Exception ex){
+ worksheet[row, 10].Value = ex.ToString();
+ }
+ }
+
+ Thread.Sleep(1000);
+
+ string filePath = Path.GetFileNameWithoutExtension(excelFilePath) + "_Updated_" + DateTime.Now.ToString().Replace(":", "-") + Path.GetExtension(excelFilePath);
+
+ workbook.SaveAs(filePath);
+
+ }
+ Close();
+
+ }
+ private static void SendEMail(string from, string recipients, string subject, string body, string attachmentPartA, string attachmentPartB)
+ {
+ //Creates the email message
+ var emailMessage = new MailMessage(from, recipients);
+ //Adds the subject for email
+ emailMessage.Subject = subject;
+ //Sets the HTML string as email body
+ emailMessage.IsBodyHtml = true;
+ emailMessage.Body = body;
+ emailMessage.Attachments.Add(new Attachment(attachmentPartA));
+ emailMessage.Attachments.Add(new Attachment(attachmentPartB));
+
+ //Sends the email with prepared message
+ using (var client = new SmtpClient())
+ {
+ //Update your SMTP Server address here
+ client.Host = "outlook.office365.com";
+ client.UseDefaultCredentials = false;
+ //Update your email credentials here. Need to generate app password for your mail id
+ client.Credentials = new System.Net.NetworkCredential(from, "apppassword");
+ client.Port = 587;
+ client.EnableSsl = true;
+ client.Send(emailMessage);
+ }
+ }
+ }
+}
diff --git a/Real Time Examples in Excel/IncomeTaxEmailDistribution/IncomeTaxEmailDistribution/Form1.resx b/Real Time Examples in Excel/IncomeTaxEmailDistribution/IncomeTaxEmailDistribution/Form1.resx
new file mode 100644
index 00000000..1af7de15
--- /dev/null
+++ b/Real Time Examples in Excel/IncomeTaxEmailDistribution/IncomeTaxEmailDistribution/Form1.resx
@@ -0,0 +1,120 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
\ No newline at end of file
diff --git a/Real Time Examples in Excel/IncomeTaxEmailDistribution/IncomeTaxEmailDistribution/IncomeTaxEmailDistribution.csproj b/Real Time Examples in Excel/IncomeTaxEmailDistribution/IncomeTaxEmailDistribution/IncomeTaxEmailDistribution.csproj
new file mode 100644
index 00000000..972c22e4
--- /dev/null
+++ b/Real Time Examples in Excel/IncomeTaxEmailDistribution/IncomeTaxEmailDistribution/IncomeTaxEmailDistribution.csproj
@@ -0,0 +1,128 @@
+
+
+
+
+ Debug
+ AnyCPU
+ {BF7DAB0E-A946-4FBF-BDAD-18D931F765F5}
+ WinExe
+ SendEmails
+ SendEmails
+ v4.7.2
+ 512
+ true
+ true
+
+
+ AnyCPU
+ true
+ full
+ false
+ bin\Debug\
+ DEBUG;TRACE
+ prompt
+ 4
+
+
+ AnyCPU
+ pdbonly
+ true
+ bin\Release\
+ TRACE
+ prompt
+ 4
+
+
+
+ ..\packages\Syncfusion.Compression.Base.22.1.37\lib\net46\Syncfusion.Compression.Base.dll
+
+
+ ..\packages\Syncfusion.Licensing.22.1.37\lib\net46\Syncfusion.Licensing.dll
+
+
+ ..\packages\Syncfusion.XlsIO.WinForms.22.1.37\lib\net46\Syncfusion.XlsIO.Base.dll
+
+
+
+
+
+ ..\packages\System.IO.4.3.0\lib\net462\System.IO.dll
+ True
+ True
+
+
+ ..\packages\System.Net.Http.4.3.4\lib\net46\System.Net.Http.dll
+ True
+ True
+
+
+ ..\packages\System.Runtime.4.3.0\lib\net462\System.Runtime.dll
+ True
+ True
+
+
+ ..\packages\System.Security.Cryptography.Algorithms.4.3.0\lib\net463\System.Security.Cryptography.Algorithms.dll
+ True
+ True
+
+
+ ..\packages\System.Security.Cryptography.Encoding.4.3.0\lib\net46\System.Security.Cryptography.Encoding.dll
+ True
+ True
+
+
+ ..\packages\System.Security.Cryptography.Primitives.4.3.0\lib\net46\System.Security.Cryptography.Primitives.dll
+ True
+ True
+
+
+ ..\packages\System.Security.Cryptography.X509Certificates.4.3.0\lib\net461\System.Security.Cryptography.X509Certificates.dll
+ True
+ True
+
+
+
+
+
+
+
+
+
+
+
+
+ Form
+
+
+ Form1.cs
+
+
+
+
+ Form1.cs
+
+
+ ResXFileCodeGenerator
+ Resources.Designer.cs
+ Designer
+
+
+ True
+ Resources.resx
+
+
+
+ SettingsSingleFileGenerator
+ Settings.Designer.cs
+
+
+ True
+ Settings.settings
+ True
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Real Time Examples in Excel/IncomeTaxEmailDistribution/IncomeTaxEmailDistribution/Program.cs b/Real Time Examples in Excel/IncomeTaxEmailDistribution/IncomeTaxEmailDistribution/Program.cs
new file mode 100644
index 00000000..7a9ca60c
--- /dev/null
+++ b/Real Time Examples in Excel/IncomeTaxEmailDistribution/IncomeTaxEmailDistribution/Program.cs
@@ -0,0 +1,22 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Threading.Tasks;
+using System.Windows.Forms;
+
+namespace IncomeTaxEmailDistribution
+{
+ internal static class Program
+ {
+ ///
+ /// The main entry point for the application.
+ ///
+ [STAThread]
+ static void Main()
+ {
+ Application.EnableVisualStyles();
+ Application.SetCompatibleTextRenderingDefault(false);
+ Application.Run(new Form1());
+ }
+ }
+}
diff --git a/Real Time Examples in Excel/IncomeTaxEmailDistribution/IncomeTaxEmailDistribution/Properties/AssemblyInfo.cs b/Real Time Examples in Excel/IncomeTaxEmailDistribution/IncomeTaxEmailDistribution/Properties/AssemblyInfo.cs
new file mode 100644
index 00000000..49d9c4a8
--- /dev/null
+++ b/Real Time Examples in Excel/IncomeTaxEmailDistribution/IncomeTaxEmailDistribution/Properties/AssemblyInfo.cs
@@ -0,0 +1,36 @@
+using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// General Information about an assembly is controlled through the following
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle("SendEmails")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("SendEmails")]
+[assembly: AssemblyCopyright("Copyright © 2023")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// Setting ComVisible to false makes the types in this assembly not visible
+// to COM components. If you need to access a type in this assembly from
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible(false)]
+
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+[assembly: Guid("bf7dab0e-a946-4fbf-bdad-18d931f765f5")]
+
+// Version information for an assembly consists of the following four values:
+//
+// Major Version
+// Minor Version
+// Build Number
+// Revision
+//
+// You can specify all the values or you can default the Build and Revision Numbers
+// by using the '*' as shown below:
+// [assembly: AssemblyVersion("1.0.*")]
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]
diff --git a/Real Time Examples in Excel/IncomeTaxEmailDistribution/IncomeTaxEmailDistribution/Properties/Resources.Designer.cs b/Real Time Examples in Excel/IncomeTaxEmailDistribution/IncomeTaxEmailDistribution/Properties/Resources.Designer.cs
new file mode 100644
index 00000000..b6548c9b
--- /dev/null
+++ b/Real Time Examples in Excel/IncomeTaxEmailDistribution/IncomeTaxEmailDistribution/Properties/Resources.Designer.cs
@@ -0,0 +1,71 @@
+//------------------------------------------------------------------------------
+//
+// This code was generated by a tool.
+// Runtime Version:4.0.30319.42000
+//
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+//
+//------------------------------------------------------------------------------
+
+namespace IncomeTaxEmailDistribution.Properties
+{
+
+
+ ///
+ /// A strongly-typed resource class, for looking up localized strings, etc.
+ ///
+ // This class was auto-generated by the StronglyTypedResourceBuilder
+ // class via a tool like ResGen or Visual Studio.
+ // To add or remove a member, edit your .ResX file then rerun ResGen
+ // with the /str option, or rebuild your VS project.
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
+ internal class Resources
+ {
+
+ private static global::System.Resources.ResourceManager resourceMan;
+
+ private static global::System.Globalization.CultureInfo resourceCulture;
+
+ [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
+ internal Resources()
+ {
+ }
+
+ ///
+ /// Returns the cached ResourceManager instance used by this class.
+ ///
+ [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+ internal static global::System.Resources.ResourceManager ResourceManager
+ {
+ get
+ {
+ if ((resourceMan == null))
+ {
+ global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("SendEmails.Properties.Resources", typeof(Resources).Assembly);
+ resourceMan = temp;
+ }
+ return resourceMan;
+ }
+ }
+
+ ///
+ /// Overrides the current thread's CurrentUICulture property for all
+ /// resource lookups using this strongly typed resource class.
+ ///
+ [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+ internal static global::System.Globalization.CultureInfo Culture
+ {
+ get
+ {
+ return resourceCulture;
+ }
+ set
+ {
+ resourceCulture = value;
+ }
+ }
+ }
+}
diff --git a/Real Time Examples in Excel/IncomeTaxEmailDistribution/IncomeTaxEmailDistribution/Properties/Resources.resx b/Real Time Examples in Excel/IncomeTaxEmailDistribution/IncomeTaxEmailDistribution/Properties/Resources.resx
new file mode 100644
index 00000000..af7dbebb
--- /dev/null
+++ b/Real Time Examples in Excel/IncomeTaxEmailDistribution/IncomeTaxEmailDistribution/Properties/Resources.resx
@@ -0,0 +1,117 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
\ No newline at end of file
diff --git a/Real Time Examples in Excel/IncomeTaxEmailDistribution/IncomeTaxEmailDistribution/Properties/Settings.Designer.cs b/Real Time Examples in Excel/IncomeTaxEmailDistribution/IncomeTaxEmailDistribution/Properties/Settings.Designer.cs
new file mode 100644
index 00000000..8e8455c5
--- /dev/null
+++ b/Real Time Examples in Excel/IncomeTaxEmailDistribution/IncomeTaxEmailDistribution/Properties/Settings.Designer.cs
@@ -0,0 +1,30 @@
+//------------------------------------------------------------------------------
+//
+// This code was generated by a tool.
+// Runtime Version:4.0.30319.42000
+//
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+//
+//------------------------------------------------------------------------------
+
+namespace IncomeTaxEmailDistribution.Properties
+{
+
+
+ [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")]
+ internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase
+ {
+
+ private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
+
+ public static Settings Default
+ {
+ get
+ {
+ return defaultInstance;
+ }
+ }
+ }
+}
diff --git a/Real Time Examples in Excel/IncomeTaxEmailDistribution/IncomeTaxEmailDistribution/Properties/Settings.settings b/Real Time Examples in Excel/IncomeTaxEmailDistribution/IncomeTaxEmailDistribution/Properties/Settings.settings
new file mode 100644
index 00000000..39645652
--- /dev/null
+++ b/Real Time Examples in Excel/IncomeTaxEmailDistribution/IncomeTaxEmailDistribution/Properties/Settings.settings
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
diff --git a/Real Time Examples in Excel/IncomeTaxEmailDistribution/IncomeTaxEmailDistribution/packages.config b/Real Time Examples in Excel/IncomeTaxEmailDistribution/IncomeTaxEmailDistribution/packages.config
new file mode 100644
index 00000000..19e14657
--- /dev/null
+++ b/Real Time Examples in Excel/IncomeTaxEmailDistribution/IncomeTaxEmailDistribution/packages.config
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
From 95fb41da1e1b95f955d59f5f61a713f32686c7a2 Mon Sep 17 00:00:00 2001
From: MOHAN CHANDRAN <93247949+Mohan2401@users.noreply.github.com>
Date: Mon, 6 Nov 2023 13:00:21 +0530
Subject: [PATCH 2/2] Modified sample for IncomeTaxEmailDistribution
---
.../Data/Part A/D00012_PartA.pdf | Bin 0 -> 35577 bytes
.../Data/Part A/D00013_PartA.pdf | Bin 0 -> 35577 bytes
.../Data/Part A/D00014_PartA.pdf | Bin 0 -> 35577 bytes
.../Data/Part A/D00015_PartA.pdf | Bin 0 -> 35577 bytes
.../Data/Part A/D00016_PartA.pdf | Bin 0 -> 35577 bytes
.../Data/Part B/D00012_PartB.pdf | Bin 0 -> 35577 bytes
.../Data/Part B/D00013_PartB.pdf | Bin 0 -> 35577 bytes
.../Data/Part B/D00014_PartB.pdf | Bin 0 -> 35577 bytes
.../Data/Part B/D00015_PartB.pdf | Bin 0 -> 35577 bytes
.../Data/Part B/D00016_PartB.pdf | Bin 0 -> 35577 bytes
.../Data/TaxPayerDetails.xlsx | Bin 0 -> 10279 bytes
.../Form1.Designer.cs | 67 +++++++++++++++---
.../IncomeTaxEmailDistribution/Form1.cs | 63 ++++++++++++----
.../IncomeTaxEmailDistribution/Form1.resx | 6 ++
.../IncomeTaxEmailDistribution.csproj | 23 ++++--
.../packages.config | 6 +-
16 files changed, 134 insertions(+), 31 deletions(-)
create mode 100644 Real Time Examples in Excel/IncomeTaxEmailDistribution/IncomeTaxEmailDistribution/Data/Part A/D00012_PartA.pdf
create mode 100644 Real Time Examples in Excel/IncomeTaxEmailDistribution/IncomeTaxEmailDistribution/Data/Part A/D00013_PartA.pdf
create mode 100644 Real Time Examples in Excel/IncomeTaxEmailDistribution/IncomeTaxEmailDistribution/Data/Part A/D00014_PartA.pdf
create mode 100644 Real Time Examples in Excel/IncomeTaxEmailDistribution/IncomeTaxEmailDistribution/Data/Part A/D00015_PartA.pdf
create mode 100644 Real Time Examples in Excel/IncomeTaxEmailDistribution/IncomeTaxEmailDistribution/Data/Part A/D00016_PartA.pdf
create mode 100644 Real Time Examples in Excel/IncomeTaxEmailDistribution/IncomeTaxEmailDistribution/Data/Part B/D00012_PartB.pdf
create mode 100644 Real Time Examples in Excel/IncomeTaxEmailDistribution/IncomeTaxEmailDistribution/Data/Part B/D00013_PartB.pdf
create mode 100644 Real Time Examples in Excel/IncomeTaxEmailDistribution/IncomeTaxEmailDistribution/Data/Part B/D00014_PartB.pdf
create mode 100644 Real Time Examples in Excel/IncomeTaxEmailDistribution/IncomeTaxEmailDistribution/Data/Part B/D00015_PartB.pdf
create mode 100644 Real Time Examples in Excel/IncomeTaxEmailDistribution/IncomeTaxEmailDistribution/Data/Part B/D00016_PartB.pdf
create mode 100644 Real Time Examples in Excel/IncomeTaxEmailDistribution/IncomeTaxEmailDistribution/Data/TaxPayerDetails.xlsx
diff --git a/Real Time Examples in Excel/IncomeTaxEmailDistribution/IncomeTaxEmailDistribution/Data/Part A/D00012_PartA.pdf b/Real Time Examples in Excel/IncomeTaxEmailDistribution/IncomeTaxEmailDistribution/Data/Part A/D00012_PartA.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..6e1d734a0b47e208ce021f134c2f413fce46abcd
GIT binary patch
literal 35577
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 |