MVC : Send email with attachment - Free Asp.Net,MVC,AngularJs,Jquery,Javascript,Sql Server,WCF,Entity framework snippets and tutorial

MVC : Send email with attachment

In this article I am going to explain how to send email with attachment using Gmail account in MVC application.

Description:
I want to send email with attachment using Gmail account.

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 empty controller to project. Create an ActionResult to send email.

Complete code of Controller:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using MvcApplication2017.Models;
using System.Security.Cryptography;
using System.Configuration;
using System.Net.Mail;
using System.Net;
using System.IO;
namespace mvcapplication2017.Controllers
{
  
    public class LoginController : Controller
    {
        //
        // GET: /Login/
        DemoEntities db = new DemoEntities();
        public ActionResult Index()
        {
            return View();
        }
        public ActionResult SendEmail()
        {
            return View();
        }
        [HttpPost]
        public ActionResult SendEmail(string Name, string Subject,string EmailID, string message,HttpPostedFileBase file1)
        {
            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;
                if (file1 != null && file1.ContentLength > 0) 
                {
                    string fileName = string.Format("{0}/{1}", Server.MapPath("~/images/"), Path.GetFileName(file1.FileName));
                    file1.SaveAs(fileName);
                    mail.Attachments.Add(new Attachment(fileName));
                }
                SmtpClient smtp = new SmtpClient();
                smtp.Send(mail);
                ViewBag.Message = "Email sent successfully";
            }
            return View();
        }
    }
}



Add view:
Add new view for SendEmail Actionresult.

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("SendEmail", "Login", FormMethod.Post, new { enctype = "multipart/form-data" }))
{
    @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",placeholder="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",placeholder="Email" })</td>
        </tr>
        <tr>
            <td>Subject :</td>
            <td>@Html.TextBox("Subject", "", new { @data_val = "true", @data_val_required = "Please enter subject", placeholder = "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", placeholder = "Message" })</td>
        </tr>
        <tr>
            <td>Attachment :</td>
            <td><input id="File1" name="File1" type="file" /></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>


What do you think about this article?

If you found this article useful, please share and follow on Facebook, Twitter, Google Plus and other social media websites. To get free updates subscribe to newsletter. Please put your thoughts and feedback in comments section.

Share this

Share on FacebookTweet on TwitterPlus on Google+


EmoticonEmoticon