Отправить несколько электронных писем с MvcMailer

Я занимаюсь разработкой проекта MVC 3 и хотел бы ежемесячно рассылать счета клиентам по электронной почте. Как бы я отправил эти несколько электронных писем, и если бы цикл, как бы я закодировал этот цикл?

Вот мой код InvoiceMailer:

    public virtual MailMessage InvoiceMailed()
    {
        var invoices = db.Invoice.FirstOrDefault();
        var client = db.Clients.FirstOrDefault();


        var mailMessage = new MailMessage{Subject = "InvoiceMailed"};

        mailMessage.To.Add("amecily@gmail.com");
        mailMessage.Bcc.Add(client.EmailAddress);
        ViewBag.Name = client.FullName;
        ViewBag.Number = invoices.InvoiceNumberID;
        ViewBag.Amount = invoices.InvoiceAmount;
        ViewBag.Month = invoices.InvoiceMonth;
        PopulateBody(mailMessage, viewName: "InvoiceMailed");

        return mailMessage;

    }

И мнение для моей электронной почты:

Hello @ViewBag.Name
<br /><br />
This is your invoice from DFP Productions for the month of @ViewBag.Month
<br /><br />
@ViewBag.Number<br />
@ViewBag.Amount<br />
@ViewBag.Month<br />

В настоящее время электронное письмо отправляется, но, очевидно, только с одним набором информации и отправляется только двум из трех получателей (это из-за FirstOrDefault и что я должен использовать вместо этого?).

Спасибо эми

1 ответ

Основная логика будет

  • Получить набор клиентов для выставления счета.
  • создать экземпляр SmtpClient, подключившись к вашему MTA
  • Для каждого клиента в наборе,
    • вычислить их данные счета
    • при необходимости создайте экземпляр MailMessage, используя данные клиента и счета-фактуры клиента.
    • Отправьте сообщение через ваш экземпляр SmtpClient
  • Удалите экземпляр SmtpClient (и любые другие IDisposables, которые больше не нужны.)
Другие вопросы по тегам