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