Статьи

Отправка писем с помощью MvcMailer

MvcMailer — это интересный компонент, который вы можете использовать для отправки электронной почты в ASP.NET MVC Framework. Самое замечательное то, что он использует представления движка Razor в качестве шаблонов электронной почты и довольно прост в настройке и использовании. В этой статье вы увидите, как установить его, настроить шаблоны электронной почты и отправлять электронные письма…

1. УСТАНОВКА

— Прежде всего, создайте новый проект ASP.NET MVC (или используйте уже разработанный вами …)

— Следующим шагом является установка компонента. Компонент может быть установлен с помощью диспетчера пакетов NuGet (консоль PowerShell или диалоговое окно NuGet Packages) или вы можете получить исходный код непосредственно из репозитория Github здесь .

Установка с помощью диспетчера пакетов NuGet

Если вы хотите установить его с помощью диалога диспетчера пакетов NuGet, вы можете найти его в Visual Studio.NET 2010 в разделе Инструменты -> Диспетчер пакетов библиотеки -> Управление пакетами NuGet…

а затем искать MvcMailer

Нажав Установить , NuGet сделает всю работу за вас.

С другой стороны (как я всегда предпочитаю), если вы используете консоль NuGet PowerShell, просто запустите следующую команду:

После того, как вы запустите команду, на моей стороне будет сгенерирован следующий лог в консоли:

PM> Install-Package MvcMailerAttempting 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.dll к вашему решению, и вы закончили установку.

2. НАСТРОЙКА ПАРАМЕТРОВ ПОЧТЫ И ПОЧТОВЫХ ШАБЛОНОВ

— Настройка параметров электронной почты

Общая практика в ASP.NET — настроить параметры электронной почты в Web.Config. После того, как вы установили MvcMailer, если вы откроете web.config, вы увидите, что у него уже есть настройки почты по умолчанию…

    <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 и выполните следующую команду:

PM> Scaffold Mailer UserMailer Welcome,GoodBye

После выполнения этой команды в ваш проект будут установлены шаблоны электронной почты по умолчанию. Журнал должен быть следующим:

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'

Разверните Views -> UserMailer, и вы увидите следующее:

Затем разверните папку Mailers, где у вас есть интерфейс IUserMailer и класс UserMailer с реализацией для шаблонов почты Welcome и GoodBye.


3. ОТПРАВИТЬ ПОЧТЫ

Чтобы отправить электронное письмо, просто создайте новый контроллер (назовите его как хотите) и создайте представление для этого контроллера.

Пример
Контроллера: HomeController (добавить Индекс ActionResult)
Вид: Домой / Индекс

Чтобы отправить электронное письмо, используйте следующий код:

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;

и директива для вашего ProjectName.Mailers, где реализован класс UserMailer.

Откройте 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. ПРОЙДИТЕ ДАННЫЕ НА ЭЛЕКТРОННЫЙ ШАБЛОН

Вы можете передавать данные в шаблон электронной почты, используя ViewBag, ViewData, TempData или строго типизированную модель.

5. ИСПОЛЬЗУЙТЕ МАСТЕР-ПЛАН И АБСОЛЮТНЫЙ URL ДЛЯ ФОТОГРАФИЙ

Так как ваши шаблоны электронной почты имеют вид Razor, вы можете легко использовать _Layout.cshtml в качестве основного макета.

Например, ваш _Layout.cshtml может выглядеть примерно так:

<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.cshtml:

Welcome @ViewBag.Name
<br />
Thank you for joining our website...

Отправленное письмо выглядит так:

Если вы хотите добавить ссылки или изображения в свою электронную почту, вы должны использовать абсолютный URL-адрес для ваших изображений … Для этого у MvcMailer есть метод расширения Abs.

Welcome.cshtml просмотр с изображением

6. ИСПЫТАТЬ ПОЧТЫ С ПИСЬМЕНОМ ТЕМПЕРАТУРНОЙ ПАПКИ

Если вы не хотите настраивать SMTP, вы можете легко переключиться на запись сообщений электронной почты в папку C: \ temp , комментируя блок SMTP в web.config и используя метод № 2.

<smtp from="admin@mywebsite.com" deliveryMethod="SpecifiedPickupDirectory">
    <network host="localhost" />
    <specifiedPickupDirectory pickupDirectoryLocation="c:\temp\"/>
</smtp>

Попробуйте отправить письмо и открыть папку C: \ Temp.

 

7. Бонус сотрудников…

Вы можете видеть, что MvcMailer — очень хороший компонент, который может помочь вам отправлять электронные письма очень простым способом, используя бритвенные (или любые другие механизмы просмотра) представления в качестве шаблонов электронной почты. Мы создали представления Welcome и GoodBye , но вы также можете сгенерировать и другие почтовые программы, используя следующую команду (пример):

Scaffold Mailer NotficationMailer FriendRequest, FriendsMessage, Follow, Понравилось

PM> Scaffold Mailer NotficationMailer FriendRequest, FriendsMessage, Follow, Liked
Added MvcMailer output 'Mailers\INotficationMailer.cs'
Added MvcMailer output 'Mailers\NotficationMailer.cs'
Added MyScaffolder output 'Views\NotficationMailer\_Layout.cshtml'
Added MyScaffolder output 'Views\NotficationMailer\FriendRequest.cshtml'
Added MyScaffolder output 'Views\NotficationMailer\FriendsMessage.cshtml'
Added MyScaffolder output 'Views\NotficationMailer\Follow.cshtml'
Added MyScaffolder output 'Views\NotficationMailer\Liked.cshtml'PM> Scaffold Mailer NotficationMailer FriendRequest, FriendsMessage, Follow, Liked
Added MvcMailer output 'Mailers\INotficationMailer.cs'
Added MvcMailer output 'Mailers\NotficationMailer.cs'
Added MyScaffolder output 'Views\NotficationMailer\_Layout.cshtml'
Added MyScaffolder output 'Views\NotficationMailer\FriendRequest.cshtml'
Added MyScaffolder output 'Views\NotficationMailer\FriendsMessage.cshtml'
Added MyScaffolder output 'Views\NotficationMailer\Follow.cshtml'
Added MyScaffolder output 'Views\NotficationMailer\Liked.cshtml'

MvcMailer дает вам очень простой и удобный способ использовать функцию отправки почты в веб-приложениях ASP.NET MVC. Используя Views в качестве шаблонов, вы можете использовать мощный Razor, чтобы легко создавать, обновлять и поддерживать свои шаблоны электронной почты.