отправка нескольких писем с помощью mvcmailer - PullRequest
4 голосов
/ 04 мая 2011

Я собираюсь использовать MVCMailer для отправки писем с использованием asp.net mvc 3 с бритвой. Также упоминается ScottHa

Это выглядит довольно просто, однако я не совсем понимаю, как бы я отправлял пакетные электронные письма, например, рассылку новостей для списка пользователей.

создать ли цикл вокруг этого?

public virtual MailMessage Welcome()
{
    var mailMessage = new MailMessage{Subject = "Welcome to MvcMailer"};

    mailMessage.To.Add("sohan39@example.com");
    ViewBag.Name = "Sohan";
    PopulateBody(mailMessage, viewName: "Welcome");

    return mailMessage;
}

может кто-нибудь объяснить? спасибо

Ответы [ 2 ]

2 голосов
/ 04 мая 2011

К сожалению, поскольку каждое сообщение электронной почты персонализировано, я не вижу другого способа, кроме зацикливания Так что просто измените свой метод на что-то вроде:

public virtual MailMessage Welcome(string email, string name)
{
    var mailMessage = new MailMessage{Subject = "Welcome to MvcMailer"};

    mailMessage.To.Add(email);
    ViewBag.Name = name;
    PopulateBody(mailMessage, viewName: "Welcome");

    return mailMessage;
}

А затем вызовите этот метод внутри цикла и одновременно отправьте его.

Важное примечание

Вы должны настроить ваш web.config для использования каталога раскладки, а не SMTP-сервера. Затем заставьте IIS отправить электронное письмо из каталога раскладки.

Аргументация - поскольку вы потенциально можете звонить SmtpClient.Send(MailMessage mailmessage) любое количество раз - это может быть довольно дорого, если вам приходится каждый раз подключаться к SMTP-серверу для отправки электронной почты.

Приятным побочным эффектом этого является то, что вы также получаете некоторую избыточность, если SMTP-сервер отключен или недоступен по какой-либо причине.

1 голос
/ 04 мая 2011

Если вам нужно разное содержимое для каждого письма, вам нужно создать отдельные MailMessage объекты с помощью цикла. Если вам нужно одинаковое содержимое, вы можете просто добавить несколько получателей:

mailMessage.To.Add("sohan39@example.com");
mailMessage.To.Add("peter23@example.com");
...