توضیحات و دانلود

ارسال ایمیل با پیوست های متعدد در ASP.Net MVC
0 0
ارسال ایمیل با پیوست های متعدد در ASP.Net MVC

 با سلام در این مقاله یک آموزش ساده را با یک مثال در نحوه ارسال ایمیل با چند پیوست در ASP.Net MVC Razor توضیح خواهیم داد.
این مثال نحوه ارسال ایمیل با پیوست های متعدد در ASP.Net MVC با استفاده از سرور GMAIL SMTP را نشان می دهد.

فضاهای نام
باید نامهای زیر را وارد کنید.

using System.IO;
using System.Net;
using System.Net.Mail;

Model
کلاس Model شامل ویژگی های زیر است که برای گرفتن مقادیر ارسال شده از فرم استفاده می شود.

public class MessageModel
{
    public string To { get; set; }
    public string Subject { get; set; }
    public string Body { get; set; }
    public string Email { get; set; }
    public string Password { get; set; }
}

Controller
Controller از دو روش تشکیل شده است.
روش انجام عملیات GET
در داخل این روش Action ، به سادگی نمایش داده می شود.
روش انجام عملیات POST
این روش هنگام ارسال فرم فراخوانی می شود. مقادیر آدرس ایمیل گیرنده (به) ، آدرس ایمیل فرستنده (از) ، موضوع و بدنه از قسمت های مربوط به آنها در شیء کلاس MessageModel جمع می شوند.
سپس تمام این مقادیر در یک شیء از کلاس MailMessage قرار می گیرند.
پیوست های ایمیل در پارامتر postedFiles در دسترس هستند. از آنجا که عنصر HTML5 FileUpload امکان انتخاب چندین فایل را فراهم می کند ، کاربر می تواند چندین فایل را انتخاب کند و تمام فایل های انتخاب شده به عنوان ضمیمه به لیست پیوست های شیء کلاس MailMessage اضافه می شوند.
برای پیوست کردن فایل به عنوان پیوست ایمیل ، باید با استفاده از عنصر HTML FileUpload ، فایل را برای ارسال به عنوان پیوست انتخاب کنید.
توجه :

متوجه می شوید که فایل مستقیماً به عنوان ضمیمه بدون ذخیره کردن آن بر روی دیسک اضافه می شود ، زیرا داده های فایل از خاصیت InputStream که متعلق به نوع System.IO.Stream است استخراج می شوند . پارامتر دوم ارائه شده نام فایل است که از ویژگی FileName استخراج می شود.
سپس یک شی از کلاس SmtpClient ایجاد می شود و تنظیمات سرور GMAIL SMTP در آن قرار می گیرد.
توجه :

لازم است در ضمن تعریف اعتبارنامه سرور Gmail SMTP به عنوان آدرس ایمیل Gmail فرستنده ، از اعتبار نامه آدرس ایمیل فرستنده استفاده کنید که با نام کاربری Gmail باشد که در اعتبارنامه مشخص شده است برابر باشد.
سرانجام ایمیل با استفاده از عملکرد Send of object class SmtpClient ارسال می شود.
ویژگی های کلاس MailMessage
در زیر ویژگی های لازم از کلاس MailMessage است .
From - آدرس ایمیل فرستنده.
To - آدرس ایمیل گیرنده .
CC - کپی از ایمیل (در صورت وجود).
BCC - کپی از ایمیل (در صورت وجود).
Subject - موضوع ایمیل.
Body - بدنه ایمیل.
IsBodyHtml - مشخص کنید که بدنه حاوی متن یا HTML باشد.
Attachments - پیوست ها (در صورت وجود).
ReplyTo - پاسخ Email آدرس ایمیل.
ویژگی های کلاس SmptClient
در زیر ویژگی کلاس SmtpClient آورده شده است .
Host - آدرس سرور SMTP (Gmail: smtp.gmail.com).
EnableSsl - مشخص کنید که Host شما اتصالات SSL را می پذیرد (Gmail: True).
UseDefaultCredentials - برای اجازه تأیید اعتبار مبتنی بر اعتبارنامه حساب مورد استفاده برای ارسال ایمیل ، روی True تنظیم کنید.
Credentials - اعتبار ورود به سیستم معتبر برای سرور SMTP (Gmail: آدرس ایمیل و رمز عبور).
Port - شماره پورت سرور SMTP (Gmail: 587)

public class HomeController : Controller
{
    // GET: Home
    public ActionResult Index()
    {
        return View();
    }
 
    [HttpPost]
    public ActionResult Index(MessageModel model, List<HttpPostedFileBase> attachments)
    {
        using (MailMessage mm = new MailMessage(model.Email, model.To))
        {
            mm.Subject = model.Subject;
            mm.Body = model.Body;
            foreach (HttpPostedFileBase attachment in attachments)
            {
                if (attachment != null)
                {
                    string fileName = Path.GetFileName(attachment.FileName);
                    mm.Attachments.Add(new Attachment(attachment.InputStream, fileName));
                }
            }
            mm.IsBodyHtml = false;
            SmtpClient smtp = new SmtpClient();
            smtp.Host = "smtp.gmail.com";
            smtp.EnableSsl = true;
            NetworkCredential NetworkCred = new NetworkCredential(model.Email, model.Password);
            smtp.UseDefaultCredentials = true;
            smtp.Credentials = NetworkCred;
            smtp.Port = 587;
            smtp.Send(mm);
            ViewBag.Message = "Email sent.";
        }
 
        return View();
    }
}

View
در داخل View، در اولین خط کلاس MessageModel به عنوان Modelبرای View اعلام می شود.
Viewشامل یک فرم HTML است که با استفاده از روش Html.BeginForm با پارامترهای زیر ایجاد شده است.
ActionName - نام عمل در این حالت Index است.
ControllerName - نام Controller در این حالت Home است.
FormMethod - این روش فرم یعنی GET یا POST را مشخص می کند. در این حالت روی POST تنظیم می شود.
HtmlAttributes - این مجموعه می تواند ویژگی های فرم اضافی را مشخص کند. در اینجا باید enctype = "multipart / form-data" را مشخص کنیم که برای بارگذاری فایل ها ضروری است.
در داخل فرم ، عناصر TextBox ، TextArea ، رمز عبور و FileUpload که برای ذخیره جزئیات ایمیل ارسال شده استفاده می شوند.
همچنین یک ارسال وجود دارد که با کلیک بر روی فرم ارسال می شود و ایمیل ارسال می شود.
پس از ارسال موفقیت آمیز ایمیل ، پیام موفقیت در جعبه پیام هشدار JavaScript با استفاده از شی ViewBag نمایش داده می شود .

@model Send_Email_Attachment_MVC.Models.MessageModel
 
@{
    Layout = null;
}
 
<!DOCTYPE html>
 
<html>
<head>
    <meta name="viewport" content="width=device-width"/>
    <title>Index</title>
</head>
<body>
    @using (Html.BeginForm("Index", "Home", FormMethod.Post, new { enctype = "multipart/form-data" }))
    {
        <table border="0" cellpadding="0" cellspacing="0">
            <tr>
                <td style="width: 80px">To:</td>
                <td>@Html.TextBoxFor(m => m.To)</td>
            </tr>
            <tr>
                <td>&nbsp;</td>
            </tr>
            <tr>
                <td>Subject:</td>
                <td>@Html.TextBoxFor(m => m.Subject)</td>
            </tr>
            <tr>
                <td>&nbsp;</td>
            </tr>
            <tr>
                <td valign="top">Body:</td>
                <td>@Html.TextAreaFor(m => m.Body, new { @rows = 10, @cols = 50 })</td>
            </tr>
            <tr>
                <td>&nbsp;</td>
            </tr>
            <tr>
                <td>File Attachment:</td>
                <td><input type="file" name="Attachments" multiple="multiple"/></td>
            </tr>
            <tr>
                <td>&nbsp;</td>
            </tr>
            <tr>
                <td>Gmail Email:</td>
                <td>@Html.TextBoxFor(m => m.Email)</td>
            </tr>
            <tr>
                <td>&nbsp;</td>
            </tr>
            <tr>
                <td>Gmail Password:</td>
                <td>@Html.PasswordFor(m => m.Password)</td>
            </tr>
            <tr>
                <td>&nbsp;</td>
            </tr>
            <tr>
                <td></td>
                <td><input type="submit" value="Send"/></td>
            </tr>
        </table>
    }
    <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>

عکسهای صفحه

فرم نمایش پیام موفقیت

ایمیل دریافت شده

 

 


دانلود
  • لینک های دانلود دوره های آموزشی تا پایان دوره قابل دانلود می باشد.
  • برای خارج کردن فایل ها از حالت فشرده از ورژن جدید نرم افزار winrar استفاده کنید.
  • برای خارج کردن فایل ها از حالت فشرده لینک های دانلودی که چندین قسمت می باشند فقط قسمت اول را از حالت فشرده خارج کنید.
  • لطفا توضیحات نوشته شده برای مطالب را با دقت بخوانید.
  • برای نمایش فیلم ها می توانید از نرم افزار هایی مانند Km Player , VLC Player یا Media Player Classic استفاده کنید.

ارسال نظر
ارسال پیام به :