- PR -

SmtpClientで複数の送信先の指定方法

1
投稿者投稿内容
未記入
ベテラン
会議室デビュー日: 2008/01/15
投稿数: 65
投稿日時: 2008-06-18 14:46
お世話になっております。

SmtpClientでメールを送信したいのですが、送信先が複数の時の指定方法を教えて下さい。

下記のソース(抜粋)で一応メールの送信はできているのですが、送信先が複数の時には最初の送信先にしかメールが送信されません。
掲載したソースでは
pMm.To.Add(New MailAddress(pToAddr.ToString()))
と一行で書いていますが、一応FORループを使って
pMm.To.Add(New MailAddress(pToAddr.Item(i).ToString()))
のようにしてアドレス分のaddを発行してみたりもしたのですが同様です。

メールサーバーはExchangeサーバーです。

アドバイスをお願いします

Dim smtpClient As SmtpClient
Dim pMm As MailMessage
Dim pFromAddr As MailAddress
Dim pToAddr As MailAddressCollection
Dim pSubject As String
Dim pBody As String


Try
smtpClient = New SmtpClient
pMm = New MailMessage

pMm = New MailMessage()

pMm.From = pFromAddr

Dim dTo As String = pToAddr.ToString()
' デバッガで確認したらdToには "addr1@xxx.com, addr2@xxx.com" がセットされていました
pMm.To.Add(New MailAddress(pToAddr.ToString()))

pMm.Subject = pSubject
pMm.SubjectEncoding = System.Text.Encoding.GetEncoding(50220)
pMm.Body = pBody
pMm.BodyEncoding = System.Text.Encoding.GetEncoding(50220)

smtpClient.Send(pMm)

Catch ex As Exception
Console.WriteLine("In Main catch block. Caught: {0}", ex.Message)
Console.WriteLine("Inner Exception is {0}", ex.InnerException)
Return False
End Try
ue
ぬし
会議室デビュー日: 2005/05/07
投稿数: 581
お住まい・勤務地: 広島市
投稿日時: 2008-06-18 17:20
こんにちは。

引用:

pMm = New MailMessage

pMm = New MailMessage()

pMm.From = pFromAddr

Dim dTo As String = pToAddr.ToString()
' デバッガで確認したらdToには "addr1@xxx.com, addr2@xxx.com" がセットされていました
pMm.To.Add(New MailAddress(pToAddr.ToString()))


ここら辺のコーディングを見直してみてください。

方法1
pMm.To.Add("recipient1@example.com,recipient2@example.com");

方法2
pMm.To.Add(new MailAddress("recipient1@example.com"));
pMm.To.Add(new MailAddress("recipient2@example.com"));

どちらの書き方でも2つの宛先に送信されるはずです。
念のため Exchamge Server 2007 で挙動を確認しましたがどちらの方法でも問題ありませんでした。
_________________
上本亮介 (ue) @ わんくま同盟
Microsoft MVP for VSTO (Jul 2008 - Jun 2009)
Hello Another World!
.NET 勉強会 / ヒーロー島
未記入
ベテラン
会議室デビュー日: 2008/01/15
投稿数: 65
投稿日時: 2008-06-19 13:03
アドバイスありがとうございます。

引用:

方法1
pMm.To.Add("recipient1@example.com,recipient2@example.com");


にすることで送信できました。
私のやり方は
pMm.To.Add(new MailAddress("addr1@xxx.com, addr2@xxx.com"));
になってしまっていました。
new MailAddress("addr1@xxx.com, addr2@xxx.com")の部分でメールアドレスの形式がおかしいなら例外でも発生させてくれればいいのにaddr1@xxx.comの部分だけで処理を継続しています。
これが親切な仕様なのか判りませんが、エラーとしてはじくか、両方のアドレスを生かすかにして欲しかったです・・・(愚痴愚痴)

いずれにしろ解決できましたのでue様のアドバイスに感謝します!!
ありがとうございました。

1

スキルアップ/キャリアアップ(JOB@IT)