send email using mvc 4 asp.net

how to send email using mvc 4 asp.net






  

Hi, I am going to share the code sample for sending email in MVC 4 using C#, $.getJSON() and jQuery.

Table of Contents

1. Code sample for appSetting config file
2. Code sample for MVC 4 Controller.cs file
3. Code sample for MVC 4 cshtml view page
4. Code sample for jQuery with $.getJSON() method

appSetting config file

<appSettings>  
    <!-- EMail Setting-->
    <add key="ToEmail" value="[email protected]"/>
    <add key="UserID" value="[email protected]"/>
    <add key="Password" value="password"/>
    <add key="SMTPPort" value="587"/>
    <add key="Host" value="smtp.gmail.com"/>
    <!-- End EMail Setting--> 
  </appSettings>

MVC 4 Controller.cs file

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net.Mail;
using System.Web;
using System.Web.Mvc;

namespace PCX.Controllers
{
    public class MailSendController : Controller
    {
        public ActionResult Index()
        {
            return View();
        }

        public JsonResult getSendEmail(string From, string Subject, string Body)
        {
            string To;
            string UserID;
            string Password;
            string SMTPPort;
            string Host;

            //Get the AppSettings.
            AppSettings(out To, out UserID, out Password, out SMTPPort, out Host);

            //Call send email methods.
            Send(From, Subject, Body, To, UserID, Password, SMTPPort, Host);
            ViewBag.Sent = true;
            //return RedirectToAction("Supports", "Account");
            return Json("Success");
        }

        //This is used for ConfigurationManager EMail Setting.
        private static void AppSettings(out string To, out string UserID, out string Password, out string SMTPPort, out string Host)
        {
            To = System.Configuration.ConfigurationManager.AppSettings.Get("ToEmail");
            UserID = System.Configuration.ConfigurationManager.AppSettings.Get("UserID");
            Password = System.Configuration.ConfigurationManager.AppSettings.Get("Password");
            SMTPPort = System.Configuration.ConfigurationManager.AppSettings.Get("SMTPPort");
            Host = System.Configuration.ConfigurationManager.AppSettings.Get("Host");
        }

        private static void Send(string From, string Subject, string Body, string To, string UserID, string Password, string SMTPPort, string Host)
        {
            try
            {
                System.Net.Mail.MailMessage mail = new System.Net.Mail.MailMessage();
                mail.To.Add(To);
                mail.From = new MailAddress(From);
                mail.Subject = Subject;
                mail.Body = Body;
                SmtpClient smtp = new SmtpClient();
                smtp.Host = Host;
                smtp.Port = Convert.ToInt16(SMTPPort);
                smtp.Credentials = new System.Net.NetworkCredential(UserID, Password);
                smtp.EnableSsl = true;
                smtp.Send(mail);
            }
            catch (Exception ex)
            {
                //Log enternal eror in db.
            }
        }
    }
}

MVC 4 cshtml view page

@{
    MvcApplication1.Models.UserSession userSession = (MvcApplication1.Models.UserSession)Session["userSession"];
}

<div class="panel-body">
    <div class="row">
        <div class="form-horizontal form-widgets col-sm-8">
            <div id="clientsDb">
                <div id="forms" data-role="view" data-title="Form Elements" data-init="initForm" data-use-native-scrolling="true">
                    <form>
                        <div class="form-group">
                            <label class="col-sm-3">
                                Subject
                            </label>
                            <div class="col-sm-8">
                                <input type="text" id="txtSubject" class="k-textbox">
                            </div>
                        </div>
                        <div class="form-group" data-role="listview" data-style="inset">
                            <label class="col-sm-3">
                                Add Comment
                            </label>
                            <div class="col-sm-8">
                                <textarea class="form-control" id="txtBody" rows="10"></textarea>
                            </div>
                        </div>
                        <div class="col-sm-11">
                            <a class="btn btn-primary pull-right" id="btnSendComment">Send Comment</a>
                        </div>
                    </form>
                </div>
            </div>
        </div>
        <div class="col-sm-4">
            <img src="~/Images/support_image.png" />
        </div>
    </div>
</div>

jQuery with $.getJSON() method

<script type="text/javascript">
    $(document).ready(function () {
        $('#btnSendComment').click(function () {
            getEmailSupportData();
        });
    });
    function validate(subject, body) {
        var isValid = true;
        if (subject !== undefined) {
            if (subject.length <= 0) {
                showMSG($("#msg"), 'Please enter subject.');
                isValid = false;
                return false;
            }
        }

        if (body != undefined) {
            if (body.length <= 0) {
                showMSG($("#msg"), 'Please enter comment.');
                isValid = false;
            }
        }
        return isValid;
    }

    function getEmailSupportData() {
        var subject = $('#txtSubject').val();
        var body = $('#txtBody').val();
        var isValid = validate(subject, body);
        if (isValid) {
            var fromEmail = '@userSession.EmailID';
            var url = '~/MailSend/getSendEmail';
            sendEmail(url, subject, body, fromEmail);
        }
    }

    function sendEmail(url, subject, body, fromEmail) {
        $.getJSON(url, { From: fromEmail, Subject: subject, Body: body })
        .done(function (data) {
            if (data !== undefined && data !== null) {
                showMSG($("#msg"), 'Your email has been sent successfully');
            }
        })
    }
</script>



ANIL SINGH

Hey! I'm Anil Singh. I author this blog. I'm Active Blogger, Programmer. I love learning new technologies, programming, blogging and participating the forum discussions more...
My Blogs - http://www.code-sample.com and http://www.code-sample.xyz
My Books - Google Amazon and Flipkart Book Store!

You Might Also Like
Post a Comment
www.code-sample.com/. Powered by Blogger.
ASK Questions
SQL Server NodeJs TypeScript JavaScript Angular SQL Server My Book