web-dev-qa-db-ja.com

MailMessageで複数の受信者に電子メールを送信する方法は?

SQL Serverに複数の電子メール受信者が保存されています。 Webページで[送信]をクリックすると、すべての受信者にメールが送信されます。「;」を使用してメールを分離しました。

以下は、単一の受信者コードです。

MailMessage Msg = new MailMessage();
MailAddress fromMail = new MailAddress(fromEmail);
Msg.From = fromMail;
Msg.To.Add(new MailAddress(toEmail));

if (ccEmail != "" && bccEmail != "")
{
    Msg.CC.Add(new MailAddress(ccEmail));
    Msg.Bcc.Add(new MailAddress(bccEmail));
}

SmtpClient a = new SmtpClient("smtp server name");
a.Send(Msg);
sreader.Dispose();
75
Chetan Goenka

簡単!

着信アドレス一覧を「;」で分割するだけです文字を追加し、メールメッセージに追加します。

foreach (var address in addresses.Split(new [] {";"}, StringSplitOptions.RemoveEmptyEntries))
{
    mailMessage.To.Add(address);    
}

この例では、addressesに「[email protected];[email protected]」が含まれています。

154
Brendan Green

コメントでAdam Millerが示唆したように、別のソリューションを追加します。

MailMessage(String from、String to)コンストラクターは、アドレスのコンマ区切りリストを受け入れます。したがって、コンマ( '、')で区切られたリストが既にある場合、使用方法は次のように簡単です。

MailMessage Msg = new MailMessage(fromMail, addresses);

この特定のケースでは、「;」を置き換えることができます'、'の場合でも、コンストラクタを使用します。

MailMessage Msg = new MailMessage(fromMail, addresses.replace(";", ","));

あなたがこれを好むか、受け入れられた答えを選ぶかはあなた次第です。おそらくループによって意図が明確になりますが、これは短く、不明瞭ではありません。しかし、すでにコンマ区切りのリストがある場合は、これが道だと思います。

69
Areks

次のPowerShellスクリプトを使用し、アドレス間で(、)を使用してこれをテストしました。それは私のために働いた!

$EmailFrom = "<[email protected]>";
$EmailPassword = "<password>";
$EmailTo = "<[email protected]>,<[email protected]>";
$SMTPServer = "<smtp.server.com>";
$SMTPPort = <port>;
$SMTPClient = New-Object Net.Mail.SmtpClient($SmtpServer,$SMTPPort);
$SMTPClient.EnableSsl = $true;
$SMTPClient.Credentials = New-Object System.Net.NetworkCredential($EmailFrom, $EmailPassword);
$Subject = "Notification from XYZ";
$Body = "this is a notification from XYZ Notifications..";
$SMTPClient.Send($EmailFrom, $EmailTo, $Subject, $Body);
0
Heitor Marcos