Send email in MVC
As we learn previously  how to send mail yourself means admin .Now we learn how to send a mail to Recipient email. Many times we need to create an email system, Here we will use for Gmail but  you can use according your requirement you can use just change
Host – SMTP Server URL (Gmail: smtp.gmail.com).
UseDefaultCredentials – Set to True in order to allow authentication based on the Credentials of the Account used to send emails.
Credentials – Valid login credentials for the SMTP server ( email ID and password).
Port – Port Number of the SMTP server (Gmail: 587)
Model (MailModel.cs)
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
namespace MVCCODESOLUTIONS.Models
{
    public class MailModel
    {
        public string To { get; set; }
        public string Subject { get; set; }
        public string Body { get; set; }
    }
}
Controller(HomeController)
using MVCCODESOLUTIONS.Models;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Net;
using System.Net.Mail;
using System.Web;
using System.Web.Mvc;
namespace MVCCODESOLUTIONS.Controllers
{
    public class HomeController : Controller
    {
        public ActionResult Index()
        {
            return View();
        }
        [HttpPost]
        public ActionResult Index(MailModel model, List<HttpPostedFileBase> attachments)
        {
            MailMessage Msg = new MailMessage("sender@gmail.com", model.To);
            //Message Subject
            Msg.Subject = model.Subject;
            //Message body
            Msg.Body = model.Body;
            //message attachment
            foreach (HttpPostedFileBase attachment in attachments)
            {
                if (attachment != null)
                {
                    string fileName = Path.GetFileName(attachment.FileName);
                    Msg.Attachments.Add(new Attachment(attachment.InputStream, fileName));
                }
            }
            Msg.IsBodyHtml = false;
            SmtpClient smtp = new SmtpClient();
            smtp.Host = "smtp.gmail.com";
            smtp.EnableSsl = true;
            NetworkCredential NetworkCred = new NetworkCredential("sender@gmail.com", "sender-password");
            smtp.UseDefaultCredentials = true;
            smtp.Credentials = NetworkCred;
            smtp.Port = 587;
            smtp.Send(Msg);
            ViewBag.Message = "Email successfully sent";
            return View();
        }
    }
}
View (Index.cs.html)
@model MVCCODESOLUTIONS.Models.MailModel
@{
    Layout = null;
}
<!DOCTYPE html>
<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <title>Send email in MVC</title>
</head>
<body>
    @using (Html.BeginForm("Index", "Home", FormMethod.Post, new { enctype = "multipart/form-data" }))
    {
        <fieldset style="width: 500px;">
            <legend>Email Form</legend>
            <table border="0" cellpadding="0" cellspacing="0">
                <tr>
                    <td style="width: 180px">Recipient Email:</td>
<td>@Html.TextBoxFor(m => m.To)</td>
                </tr>
                <tr>
                    <td> </td>
                </tr>
                <tr>
                    <td>Subject:</td>
                    <td>@Html.TextBoxFor(m => m.Subject)</td>
                </tr>
                <tr>
                    <td> </td>
                </tr>
                <tr>
                    <td valign="top">Message:</td>
                    <td>@Html.TextAreaFor(m => m.Body, new { @rows = 10, @cols = 50 })</td>
                </tr>
                <tr>
                    <td> </td>
                </tr>
                <tr>
                    <td>File Upload:</td>
                    <td><input type="file" name="Attachments" multiple="multiple" /></td>
                </tr>
                <tr>
                    <td> </td>
                </tr>
                <tr>
                    <td> </td>
</tr>
                <tr>
                    <td></td>
                    <td><input type="submit" value="Send" /></td>
                </tr>
            </table>
        </fieldset>
    }
    <script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
    <script type="text/javascript">
        var message = "@ViewBag.Message";
        $(function () {
            if (message != "") {
                alert(message);
            }
        });
    </script>
</body>
</html>
Out-Put:-
Send email in MVC
 
        Reviewed by NEERAJ SRIVASTAVA
        on 
        
10:03:00 AM
 
        Rating: 
 
        Reviewed by NEERAJ SRIVASTAVA
        on 
        
10:03:00 AM
 
        Rating: 

No comments: