Please follow the below steps;
Step-1: Create a new model class in models folder
The following is the code for new model;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
namespace MVC_SentMailApp.Models
{
public class MailModel
{
public string To { get; set; }
public string Subject { get; set; }
public string Body { get; set; }
}
}
Step-2: Create a new controller in Controllers Folder
Following is the code for Controller;
SentMailController.cs
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 MVC_SentMailApp.Controllers
{
public class SentMailController : Controller
{
//
// GET: /Sent Mail/
public ActionResult Index()
{
return View();
}
/// <summary>
/// Send Mail with Gmail
/// </summary>
/// <param name=”objModelMail”>MailModel Object, keeps all properties</param>
/// <param name=”fileUploader”>Selected file data, example-filename,content,content type(file type- .txt,.png etc.),length etc.</param>
/// <returns></returns>
[HttpPost]
public ActionResult Index(SendMailwithAttachment.Models.MailModel objModelMail, HttpPostedFileBasefileUploader)
{
if (ModelState.IsValid)
{
string from = “Your Gmail Id”; //example:- lakshmi9@gmail.com
using (MailMessage mail = new MailMessage(from, objModelMail.To))
{
mail.Subject = objModelMail.Subject;
mail.Body = objModelMail.Body;
if (fileUploader != null)
{
string fileName = Path.GetFileName(fileUploader.FileName);
mail.Attachments.Add(new Attachment(fileUploader.InputStream, fileName));
}
mail.IsBodyHtml = false;
SmtpClient smtp = new SmtpClient();
smtp.Host = “smtp.gmail.com”;
smtp.EnableSsl = true;
NetworkCredential networkCredential = new NetworkCredential(from, “Your Gmail Password”);
smtp.UseDefaultCredentials = true;
smtp.Credentials = networkCredential;
smtp.Port = 587;
smtp.Send(mail);
ViewBag.Message = “Sent”;
return View(“Index”, objModelMail);
}
}
else
{
return View();
}
}
}
}
Index.cshtml
@model MVC_SentMailApp.Models.MailModel
@{
ViewBag.Title = “Index”;
}
<script src=”~/Scripts/jquery-1.7.1.min.js”></script>
<script>
$(document).ready(function () {
if (‘@ViewBag.Message’ == ‘Sent’) {
alert(‘Mail has been sent successfully’);
}
});
</script>
<h2>Index</h2>
<fieldset>
<legend>Send Email
</legend>
@using (@Html.BeginForm(“Index”, “SendMailer”, FormMethod.Post, new { @id = “form1″, @enctype =”multipart/form-data” }))
{
@Html.ValidationSummary()
<input type=”submit” value=”Send” />
<table>
<tr>
<td>To:
</td>
<td>
@Html.TextBoxFor(m => m.To)
</td>
</tr>
<tr>
<td>Subject:
</td>
<td>
@Html.TextBoxFor(m => m.Subject)
</td>
</tr>
<tr>
<td>Attachment
</td>
<td>
<input type=”file” name=”fileUploader” />
</td>
</tr>
<tr>
<td>Body:
</td>
<td>
@Html.TextAreaFor(m => m.Body)
</td>
</tr>
</table>
}
</fieldset>
In the code above we have the following 4 fields:
- To
- Subject
- Message
- Attachment
When the user clicks the “Send” button, the mail will be sent to the specified mail address that you provide in the “To” TextBox.
That’s it. Press F5 to run your code.
U can also try it in your local environment — good luck:)