Sunday, November 19, 2017

MVC : Send email using Gmail account

In this article I am going to explain how to send email using Gmail account in asp.net MVC.

Description:
If you don’t have SMTP server to send email then you can use Gmail smtp server to send email from your MVC application.
  
Implementation:
Open the web.config file of project. Set key in appsettings. After that mailsettings as shown below:

<appSettings>
    <add key="Email" value="Emailaddress@gmail.com"/>
  </appSettings>
  <system.net>
    <mailSettings>
      <smtp deliveryMethod="Network">
        <network enableSsl="true" port="587" host="smtp.gmail.com" userName=" Emailaddress@gmail.com" password="password"/>
      </smtp>
    </mailSettings>
  </system.net>


Add controller
Add an empty controller to project. Create an Actionresult to send email.

Complete code to Controller:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using mvctest2017.Models;
using System.Security.Cryptography;
using System.Configuration;
using System.Net.Mail;
using System.Net;
namespace mvctest2017.Controllers
{
  
    public class SendemailController : Controller
    {
        public ActionResult Index()
        {
            return View();
        }
        public ActionResult SendEmail()
        {
            return View();
        }
        [HttpPost]
       public ActionResult SendEmail(string Name, string Subject,string EmailID, string message)
        {
            if (ModelState.IsValid)
            {
                string Email = ConfigurationManager.AppSettings["Email"].ToString();
                string Emailto = EmailID;
                MailMessage mail = new MailMessage(Email, Emailto);
                mail.Subject = Subject;
                string mailmessage = "Name :"+ Name +"<br>"+ message;
                mail.Body = mailmessage;
                mail.IsBodyHtml = true;
                SmtpClient smtp = new SmtpClient();
                smtp.Send(mail);
                ViewBag.Message = "Email sent successfully";
            }
            return View();
        }
    }

}


Add view
Add view for Send email Actionresult.

Complete source code of View

@{
    ViewBag.Title = "Send Email";
}
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>

<h2>Send Email</h2>
@using (Html.BeginForm())
{
    @Html.ValidationSummary()
<fieldset>
    <legend>Send Email</legend>
    <table>
        <tr>
            <td>Name :</td>
            <td>@Html.TextBox("Name", "", new { @data_val = "true", @data_val_required = "Please enter name" })</td>
        </tr>
        <tr>
            <td>Email :</td>
            <td>@Html.TextBox("EmailID","", new { @data_val = "true",@data_val_email="email dsfdsfsdf", @data_val_required = "Please enter email address" })</td>
        </tr>
        <tr>
            <td>Subject :</td>
            <td>@Html.TextBox("Subject", "", new { @data_val = "true", @data_val_required = "Please enter subject" })</td>
        </tr>
        <tr>
            <td>Message :</td>
            <td>@Html.TextArea("message", "", new { rows="6", cols="22",@data_val = "true", @data_val_required = "Please enter message" })</td>
        </tr>
        <tr>
            <td></td>
            <td><input type="submit" value="Send Email" /></td>
        </tr>
    </table>
    @ViewBag.Message
</fieldset>
}
<script src="~/Scripts/jquery.validate.min.js"></script>
<script src="~/Scripts/jquery.validate.unobtrusive.min.js"></script>


No comments:

Post a Comment