ارسال ایمیل با استفاده از MvcMailer

جمعه 30 خرداد 1393

ارسال ایمیل در mvc با استفاده از MvcMailer MvcMailer ،یک کامپوننت بسیار جالب برای ارسال ایمیل در Asp.net MVC Framework می باشد.در این مقاله شما خواهید دید چگونه تمپلیت ایمیل نصب و ارسال می شود.

ارسال  ایمیل با استفاده از MvcMailer

MvcMailer ،یک کامپوننت بسیار جالب برای ارسال ایمیل در Asp.net MVC Framework می باشد.در این مقاله شما خواهید دید چگونه تمپلیت ایمیل نصب و ارسال می شود.

-ابتدا یک پروژه Asp.net Mvc بسازید.

-مرحله بعد نصب کامپوننت است.این کامپوننت می تواند از طریق NuGet Package Manager نصب شود و یا به طور مستقیم سورس کد را از Github بگیرید.https://github.com/smsohan/MvcMailer

1.طریقه نصب NuGet Package Manager

برای نصب NuGet Package Manager، شما می توانید آنرا در Visual Studio 2010

 در مسیرTools -> Libarary Package Manager->Manage NuGet Package  پیدا کنید.

 

و سپس جستجو برای MvcMailer

با کلیک بر روی دکمه install ،همه کارها توسط NuGet انجام می شود.

از یک طرف دیگر ،اگر شما از NuGet Power Shell Console استفاده میکنید .فقط نیاز است دستور زیر را اجرا کنید.

هنگام اجرای این دستور Log زیر تولید میشود.

PM> Install-Package MvcMailer
Attempting to resolve dependency 'T4Scaffolding (≥ 0.9.7)'.
Attempting to resolve dependency 'EntityFramework (≥ 4.1.10311.0)'.
You are downloading EntityFramework from Microsoft, the license agreement to which is available at http://go.microsoft.com/fwlink/?LinkId=224682. Check the package for additional dependencies, which may come with their own license agreement(s). Your use of the package and dependencies constitutes your acceptance of their license agreements. If you do not accept the license agreement(s), then delete the relevant components from your device.
Successfully installed 'EntityFramework 4.1.10715.0'.
Successfully installed 'T4Scaffolding 0.9.9'.
Successfully installed 'MvcMailer 1.1'.
Successfully removed 'EntityFramework 4.1.10331.0' from MyMvcMailer.
Successfully added 'EntityFramework 4.1.10715.0' to MyMvcMailer.
Successfully added 'T4Scaffolding 0.9.9' to MyMvcMailer.
Successfully added 'MvcMailer 1.1' to MyMvcMailer.

هم اکنون NuGet،به سولوشن شما MvcMailer را اضافه کرده است.

2.تنظیمات ایمیل و ایمیل تمپلیت

-تنظیمات ایمیل

یک کار رایج در Asp.net  قراردادن تنظیمات ایمیل در Webconfig است.بعد از نصب MvcMailer ،هنگامی که Webconfig را باز می کنید،خواهید دید تنظیمات ایمیل در آن اضافه شده است.

 <system.net>
        <mailSettings>
            <!-- Method#1: Configure smtp server credentials -->
            <smtp from="some-email@gmail.com">
                <network enableSsl="true" host="smtp.gmail.com" port="587" userName="some-email@gmail.com" password="valid-password" />
            </smtp>
            <!-- Method#2: Dump emails to a local directory -->
            <!--
            <smtp from="some-email@gmail.com" deliveryMethod="SpecifiedPickupDirectory">
                <network host="localhost" />
                <specifiedPickupDirectory pickupDirectoryLocation="c:\temp\"/>
            </smtp>
            -->
        </mailSettings>
    </system.net>

تنظیمات  SMTP خودتان را اضافه کنید.

-تنظیمات پیش فرض ایمیل تمپلیت

NuGet Console را باز کنید و دستور زیر را اجرا کنید.

PM> Scaffold Mailer UserMailer Welcome,GoodBye
After running this command, default email templates will be installed in your project. The log should be as follows:
Added MvcMailer output 'Mailers\IUserMailer.cs'
Added MvcMailer output 'Mailers\UserMailer.cs'
Added MyScaffolder output 'Views\UserMailer\_Layout.cshtml'
Added MyScaffolder output 'Views\UserMailer\Welcome.cshtml'
Added MyScaffolder output 'Views\UserMailer\GoodBye.cshtml'
Expand Views –> UserMailer and you will see the following:

3. ارسال ایمیل

برای ارسال ایمیل یک کنترولر جدید و یک view  برای اون بسازیدو

برای مثال

Controller: HomeController 

View: Home/Index

یرای ارسال ایمیل ار کد زیر استفاده کنید.

public ActionResult Index()
{
    IUserMailer mailer = new UserMailer();
    mailer.Welcome().Send();
    return View();
}

یا برای اجرای بهتر می توانید از کد زیر استفاده کنید.

private IUserMailer _mailer = new UserMailer();
public IUserMailer Mailer
{
    get { return _mailer; }
    set { _mailer = value; }
}
public ActionResult Index()
{
    Mailer.Welcome().Send();
    return View();
}

و شما نیاز دارید به

using Mvc.Mailer;

UserMailer.cs را باز کنید و کد مربوط به متد Welcome را به کد زیر تغییر دهید.

public virtual MailMessage Welcome()
{
    var mailMessage = new MailMessage { Subject = "Welcome" };
    
    mailMessage.To.Add("hajan@hajan.com");
    ViewBag.Name = "Hajan";            
    PopulateBody(mailMessage, viewName: "Welcome");
    return mailMessage;
}

4. ارسال داده به ایمیل تمپلیت

شما می توانید داده ها را به ایمیل تمپلیت از طریق TempData ،ViewBag،ViewData و Strongly Typed Model ارسال کنید.

5. استفاده از Master Layout

برای مثال _Layout .chshtml شما می تواند چیزی شبیه کد زبر شود

<html>
    <head>
        <style type="text/css">
            div { font-family:Verdana, Arial, Sans-Serif; font-size:10px; }
            #mail-message { padding:10px; }
            #mail-footer { padding:10px; }
        </style>
    </head>
    <body>
    <div id="mail-message">
        @RenderBody()
    </div>
    <div id="mail-footer">
        Best Regards,<br />
        <a href="http://www.mywebsite.com">www.mywebsite.com</a>
    </div>
    </body>
</html>
Welcome @ViewBag.Name
<br />
Thank you for joining our website...

ایمیل ارسال شده شبیه عکس زیر است

اگر شما می خواهید لینک و یا تصویر به ایمیل تان اضافه کنید،شما باید از Absolute URL در اون عکس ها استفاده کنید.

ایمیل ارسالی همراه با عکس

6.تست ارسال ایمیل

اگر شما نمی خواهید تنظیمات SMTP را انجام دهید ،می توانید بلاک مربوط به تنظیمات SMTP در Webconfig را کامنت کرده و متد زیر را جایگزین کنید

<smtp from="admin@mywebsite.com" deliveryMethod="SpecifiedPickupDirectory">
    <network host="localhost" />
    <specifiedPickupDirectory pickupDirectoryLocation="c:\temp\"/>
</smtp>
Try to send email and open the C:\Temp folder.


 

MvcMailer،به شما یک راه آسان برای داشتن یک امتیازات یک ایمیل ارسالی در Asp.net Mvc را می دهد.

امیدوارم این مقاله برای شما مفید باشد.

ایمان مدائنی

نویسنده 1299 مقاله در برنامه نویسان

کاربرانی که از نویسنده این مقاله تشکر کرده اند

در صورتی که در رابطه با این مقاله سوالی دارید، در تاپیک های انجمن مطرح کنید