Skip to main content

Schedule Mail Sending with attachment file ASP.NET MVC

For scheduling mail i am using JobcashAction. It's simple

Open your Global.asax.cs file just use the following code.

  public class MvcApplication : System.Web.HttpApplication  
   {  
     // Define Path Of the Job  
     private const string JobCashAction = "http://localhost:38416/Home/AddJobCache";  
     protected void Application_Start()  
     {  
       AreaRegistration.RegisterAllAreas();  
       WebApiConfig.Register(GlobalConfiguration.Configuration);  
       FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);  
       RouteConfig.RegisterRoutes(RouteTable.Routes);  
       BundleConfig.RegisterBundles(BundleTable.Bundles);  
       AuthConfig.RegisterAuth();  
     }  
     protected void Application_BeginRequest(object sender, EventArgs e)  
     {  
       if (HttpContext.Current.Cache["jobkey"] == null)  
       {  
         HttpContext.Current.Cache.Add("jobkey",  
                         "jobvalue", null,  
                         DateTime.MaxValue,  
                         TimeSpan.FromSeconds(15), // set the time interval  
                         CacheItemPriority.Default, JobCacheRemoved);  
       }  
     }  
     private static void JobCacheRemoved(string key, object value, CacheItemRemovedReason reason)  
     {  
       var client = new WebClient();  
       client.DownloadData(JobCashAction);  
       ScheduleJob();  
     }  
     private static void ScheduleJob()  
     {  
       // ExecuteAnyMethod  
     }  
   }  


Now just use the code in you controller as you define in JobcashAction path in Global 

"http://localhost:38416/Home/AddJobCache";

 I use AddJobCache  ActionResult it in my home controller.



 public ActionResult AddJobCache()  
     {  
       // Report data  
       List<Student> studentList = new List<Student>();  
       studentList = GetStudentInfo(); // Get the StudentList Data  
       ReportDocument details = new ReportDocument();  
       details.Load(Server.MapPath("../Report/rptStudent.rpt")); // Crystal report path  
       details.SetDataSource(studentList); // Set the StudentList Data as report source  
       details.ExportToDisk(ExportFormatType.PortableDocFormat, "D:\\ff.pdf"); // save file as pdf  
       // Mail Send  
       MailMessage mail = new MailMessage();  
       SmtpClient SmtpServer = new SmtpClient("smtp.gmail.com");  
       mail.From = new MailAddress("atiour.islam@gmail.com"); // Sender Email Address  
       mail.To.Add("atik.kotha@gmail.com"); // Send Mail to  
       mail.Subject = "Test"; // Email Subject  
       mail.Body = "Hi"; // Email Body  
       System.Net.Mail.Attachment attachment;  
       attachment = new System.Net.Mail.Attachment("D:\\ff.pdf");// Get Attach file path  
       mail.Attachments.Add(attachment);  
       SmtpServer.Port = 587;  
       SmtpServer.Credentials = new System.Net.NetworkCredential("atiour.islam@gmail.com", "yourpassword");// Sender Email & Password  
       SmtpServer.EnableSsl = true;  
       SmtpServer.Timeout = 60000;  
       SmtpServer.Send(mail);  
       return null;  
     }  

Enjoy...



Comments

Popular posts from this blog

C# run powershell script as administrator

Recently I was fetching a problem that I need to run a PowerShell script that will change TFS user Display name and SID. I was trying to run that script from C# that was not working due to TFS security update and TLS certificate. Using this code block I resolve the Issue. var newProcessInfo = new System.Diagnostics.ProcessStartInfo(); newProcessInfo.FileName = @"C:\Windows\SysWOW64\WindowsPowerShell\v1.0\powershell.exe"; newProcessInfo.Verb = "runas"; // Define Run as administrator newProcessInfo.Arguments = script; //Define your powershell script newProcessInfo.UseShellExecute = false; newProcessInfo.RedirectStandardOutput = true; // This will enable to read Powershell run output newProcessInfo.RedirectStandardError = true; Process proces = System.Diagnostics.Process.Start(newProcessInfo); proces.WaitForExit(); // I want to read the output string from powershell window StringBuilder output = new StringBuilder(); output.Append("Started"); while (!proces.St

ASP.NET MVC razor SAP Crystal report

Crete a new project: Add a aspx Master Page Create a new folder Reports and 2 sub folder crystal & crystalviewer Now add a web form page in crystalviewer  folder. Add the master page namespace in your web form page. MasterPageFile ="~/Views/Shared/ReportSite.Master" Replace your web form by this code < asp : Content ID ="Content1" ContentPlaceHolderID ="ContentPlaceHolder1" runat ="server">      </ asp : Content > Now go to design mode of your web form drag & drop the crystal report viewer in your web form. After that your page will be look look like this. Replace the code: < CR : CrystalReportViewer ID ="EmployeeList" runat ="server"   HasCrystalLogo ="False"     AutoDataBind ="True"   Height ="50px"   EnableParameterPrompt ="false" EnableDatabaseLogonPrompt

mvc razor textboxfor change event change another textboxfor value

Based on value of Weight, Rate , CNF & AWB it will change the value of Freight , TTLCNF anfd TTLFright . Freight= Weight*Rate; TTLCNF  = Weight*CNF; TTLFright=  Freight+ TTLCNF  + AWB; @Html.TextBoxFor(model => model.Weight, new { onChange="return GetWight(this);"}) @Html.TextBoxFor(model => model.Rate, new { onChange="return GetWight(this);"})/Kg @Html.TextBoxFor(model => model.Freight, new {disabled = "disabled" , @readonly = "readonly" ,onChange="return GetTTLFright(this);"}) @Html.TextBoxFor(model => model.CNFPK, new { onChange="return GetCNFPK(this);"}) @Html.TextBoxFor(model => model.TTLCNF, new {disabled = "disabled" , @readonly = "readonly",onChange="return GetTTLFright(this);" }) @Html.TextBoxFor(model => model.AWB, new { onChange="return GetTTLFright(this);"}) and script <script> function GetW