Hi friends,in this article I will explain about How to Send Email with multiple attachments in ASP.NET MVC 4 Razor:
For sending mail from
ASP.NET MVC we use the "System.Net.Mail" namespace. Let's explain how to
do this.
I already explained in the previous articles about MVC 4: How to bind dropdownlist inside WebGrid in MVC 4 Razor using C# ,Create/Generat PDF with image Using RazorPDF in ASP.Net MVC and MVC4: Show Multiple Models in a Single View using dynamically created object.
Model(SendMail.cs):I already explained in the previous articles about MVC 4: How to bind dropdownlist inside WebGrid in MVC 4 Razor using C# ,Create/Generat PDF with image Using RazorPDF in ASP.Net MVC and MVC4: Show Multiple Models in a Single View using dynamically created object.
using System;
using
System.Collections.Generic;
using System.Linq;
using System.Web;
using
System.ComponentModel.DataAnnotations;
namespace
MvcSendEmailWithAttachment.Models
{
public
class SendMail
{
[Display(Name = "First
Address")]
[Required(ErrorMessage = "First
Address is Required")]
public string
FromMailID { get; set;
}
[Display(Name = "Password")]
[Required(ErrorMessage = "Password
is Required")]
public string
password { get; set;
}
[Display(Name = "To
mail ID")]
[Required(ErrorMessage = "To
mail ID is Required")]
public string To { get; set; }
[Display(Name = "Subject")]
[Required(ErrorMessage = "Subject
is Required")]
public string
Subject { get; set;
}
[Display(Name = "Mail
Body")]
[Required(ErrorMessage = "Mail
Body is Required")]
public string Body
{ get; set; }
}
}
|
Controller(SendMailController.cs):
using System;
using
System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using
MvcSendEmailWithAttachment.Models;
using System.Net.Mail;
using System.IO;
using System.Net;
namespace
MvcSendEmailWithAttachment.Controllers
{
public
class SendMailController
: Controller
{
public ActionResult
SendMail()
{
return
View();
}
[HttpPost]
public ActionResult
SendMail(SendMail objSendMail, HttpPostedFileBase uploadedFile1, HttpPostedFileBase uploadedFile2, HttpPostedFileBase uploadedFile3)
{
if (ModelState.IsValid)
{
MailMessage mail_mes = new
MailMessage();
mail_mes.To.Add(objSendMail.To);
mail_mes.From
= new MailAddress(objSendMail.FromMailID);
mail_mes.Subject = objSendMail.Subject;
mail_mes.Body
= objSendMail.Body;
mail_mes.IsBodyHtml = false;
if (uploadedFile1 != null)
{
string fileName = Path.GetFileName(uploadedFile1.FileName);
mail_mes.Attachments.Add(new Attachment(uploadedFile1.InputStream,
fileName));
}
if (uploadedFile2 != null)
{
string fileName = Path.GetFileName(uploadedFile2.FileName);
mail_mes.Attachments.Add(new Attachment(uploadedFile2.InputStream,
fileName));
}
if (uploadedFile3 != null)
{
string fileName = Path.GetFileName(uploadedFile3.FileName);
mail_mes.Attachments.Add(new Attachment(uploadedFile3.InputStream,
fileName));
}
SmtpClient smtp = new
SmtpClient("smtp.gmail.com",587);
smtp.DeliveryMethod
= SmtpDeliveryMethod.Network;
NetworkCredential networkCredential = new NetworkCredential(objSendMail.FromMailID,objSendMail.FromMailID,objSendMail.password);//Or your Smtp Email ID and Password
smtp.EnableSsl
= true;
smtp.Credentials = networkCredential;
smtp.UseDefaultCredentials = false;
smtp.Credentials = networkCredential;
try
{
smtp.Send(mail_mes);
}
catch (Exception
ex)
{
throw ex;
}
ViewBag.Message = "Sent";
return View("SendMail");
}
else
{
return
View();
}
}
}
}
|
View(SendMail.cshtml):
@model MvcSendEmailWithAttachment.Models.SendMail
@{
ViewBag.Title = "SendMail with Multiple attachments";
}
<h2>SendMail</h2>
<script src="../../Scripts/jquery-1.7.1.js"
type="text/javascript"></script>
<script type="text/javascript"
language="javascript">
$(document).ready(function () {
if ('@ViewBag.Message' == 'Sent') {
alert('Mail has been sent successfully');
}
});
</script>
<style type="text/css">
.validation-summary-errors
{
color:
#C10084;
font-size:
medium;
font-family:Tahoma;
}
</style>
<fieldset>
<legend>Send
Email with multiple attachments
</legend>
@using
(@Html.BeginForm("SendMail", "SendMail", FormMethod.Post,
new { @id = "form1",
@enctype = "multipart/form-data"
}))
{
@Html.ValidationSummary()
<table>
<tr>
<td>From mail ID:
</td>
<td>
@Html.TextBoxFor(m
=> m.FromMailID)
</td>
</tr>
<tr>
<td>Password:
</td>
<td>
@Html.PasswordFor(m
=> m.password)
</td>
</tr>
<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 1
</td>
<td>
<input type="file"
name="fileUploader1"
/>
</td>
</tr>
<tr>
<td>Attachment
2
</td>
<td>
<input type="file"
name="fileUploader2"
/>
</td>
</tr>
<tr>
<td>Attachment 3
</td>
<td>
<input type="file"
name="fileUploader3"
/>
</td>
</tr>
<tr>
<td>Body:
</td>
<td>
@Html.TextAreaFor(m
=> m.Body)
</td>
</tr>
</table>
<input type="submit"
value="Send
Mail" />
}
</fieldset>
|
The output of the above code as shown in the below figure.When you don't enter values and click on Send Mail button then validations messages will show.
Enter the values and click on Send Mail then mail will be sent.
You can download the code by clicking on the below Download image.
No comments:
Post a Comment