Как я могу включить нескольких получателей в сообщение электронной почты Gmail?

У меня есть рабочий код для отправки электронного письма с использованием моей учетной записи Gmail:

public static void SendEmail(string fullName, string toEmail, string HH, string HHEmailAddr)
{
    var fromAddress = new MailAddress(FROM_EMAIL, FROM_EMAIL_NAME);
    var toAddress = new MailAddress(toEmail, fullName);
    var toAddressHH = new MailAddress(HHEmailAddr, HH);
    string fromPassword = GMAIL_PASSWORD;

    List<String> htmlBody = new List<string>
    {
        "<html><body>",
        . . .
        "</body></html>"
    };
    var body = string.Join("", htmlBody.ToArray());

    var smtp = new SmtpClient
    {
        Host = "smtp.gmail.com",
        Port = 587,
        EnableSsl = true,
        DeliveryMethod = SmtpDeliveryMethod.Network,
        UseDefaultCredentials = false,
        Credentials = new NetworkCredential(fromAddress.Address, fromPassword)
    };
    using (var message = new MailMessage(fromAddress, toAddress)
    {
        Subject = subject,
        Body = body,
        IsBodyHtml = true
    })
    {
        smtp.Send(message);
    }
}

Проблема в том, что я хочу отправить письмо двум получателям, а не одному. Теоретически я могу добавить еще одно сообщение в конец этого кода вот так:

    . . .
    using (var messageHH = new MailMessage(fromAddress, toAddressHH)
    {
        Subject = subject,
        Body = body,
        IsBodyHtml = true
    })
    {
        smtp.Send(messageHH);
    }
}

... отправка двух писем из одного блока кода, но на самом деле я хочу сделать что-то вроде этого:

List<MailAddress> recipients = new List<MailAddress>();
recipients.Add(toAddress);
recipients.Add(toAddressHH);
. . .
using (var message = new MailMessage(fromAddress, recipients)

... но похоже, что для конструктора MailMessage такой перегрузки нет. Как я могу добавить второго получателя к отправке электронного письма из Gmail? Было бы неплохо узнать об этом как о со-реципиенте, так и о получателе «CC».

ОБНОВИТЬ

Если я попробую предложенное:

using (var message = new MailMessage(fromAddress, toAddress)
{
    Subject = subject,
    Body = body,
    To.Add("[email protected]", "Duckbilled Platypus")
})

...Я получил:

Недопустимый декларатор члена инициализатора

..а также:

Имя "Кому" не существует в текущем контексте

Я получаю то же самое со следующей перестановкой:

To.Add(new MailAddress("[email protected]", "Duckbilled Platypus"))

person B. Clay Shannon    schedule 08.03.2016    source источник
comment
Для добавления получателей используйте соответственно message.To.Add(), message.CC.Add() или message.Bcc.Add().   -  person Glorin Oakenfoot    schedule 08.03.2016


Ответы (2)


Просмотр документации Microsoft, вы можете видеть, что свойство MailMessage.To является MailAddressCollection.

MailAddressCollection имеет метод Add (), который добавляет значения в коллекцию.

Имея эту информацию, вы можете попробовать что-то вроде этого:

messageHH.To.Add(new MailAddress("[email protected]","Recipient1 Name"));
messageHH.To.Add(new MailAddress("[email protected]","Recipient2 Name"));
messageHH.To.Add(new MailAddress("[email protected]","Recipient3 Name"));
//etc...
person Robert    schedule 08.03.2016

Мне пришлось изменить "стиль" объявления, но это работает:

var message = new MailMessage(fromAddress, toAddress);
message.Subject = subject;
message.Body = body;
message.To.Add(new MailAddress("[email protected]", "Duckbilled Platypus"));
message.To.Add(new MailAddress("[email protected]", "Platypus 2"));
smtp.Send(message);
person B. Clay Shannon    schedule 08.03.2016