編集:この質問は、赤いニシンの練習問題を除いて無意味です。この問題は、私の愚かさ(ホストが指定されておらず、web.configで間違っていたために電子メールが送信されなかった)と、ユーザーが電子メールを受信する場合と受信しない場合があることを組み合わせたものであることが判明しました実際には、彼らは決してメールを受け取っていませんでした。
だから、制御された設定で問題を再現するための適切な手順をとる代わりに、ユーザー情報と「私のマシンで動作する」という考え方に頼っていました。自分自身と、時としてばかであることがある他の人たちへの良いリマインダー。
矛盾していると思うものをヒットし、何か間違っているのか、バカなのか、または...
MailMessage msg = new MailMessage();
msg.To.Add("[email protected]");
msg.To.Add("[email protected]");
msg.To.Add("[email protected]");
msg.To.Add("[email protected]");
本当にこのメールは最後の1人にしか送信されません。
倍数を追加するには、これを行う必要があります。
msg.To.Add("[email protected],[email protected],[email protected],[email protected]");
わかりません。私はTo
アドレスコレクションに複数の人を追加すると思っていましたが、私はそれを置き換えていました。
私は自分のエラーに気付いたと思う-コレクションに1つのアイテムを追加するには、.To.Add(new MailAddress( "[email protected]"))を使用します
string
のみを使用すると、リストにあるすべてのものが置き換えられます。 編集:他の人々はテストしており、この動作を見ていません。これは、フレームワークの特定のバージョンのバグか、おそらく私によるバカ操作です。
あーこれはかなり大きな問題だと思います!私は自分の質問に答えましたが、これはstackoverflowアーカイブにある価値があると思うので、私はまだ尋ねます。たぶん、誰かがあなたが陥る可能性のある他のトラップのアイデアを持っているかもしれません。
バグを再現できませんでした:
var message = new MailMessage();
message.To.Add("[email protected]");
message.To.Add("[email protected]");
message.From = new MailAddress("[email protected]");
message.Subject = "Test";
message.Body = "Test";
var client = new SmtpClient("localhost", 25);
client.Send(message);
宛先の内容のダンプ: MailAddressCollection :
MailAddressCollection(2アイテム)
DisplayNameユーザーホストアドレスユーザーexample.com [email protected]
user2 example.com [email protected]
smtp4dev でキャッチされた結果の電子メール:
Received: from mycomputername (mycomputername [127.0.0.1])
by localhost (Eric Daugherty's C# Email Server)
3/8/2010 12:50:28 PM
MIME-Version: 1.0
From: [email protected]
To: [email protected], [email protected]
Date: 8 Mar 2010 12:50:28 -0800
Subject: Test
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: quoted-printable
Test
コードまたはSMTPサーバーで他の問題が発生していないことを確認していますか?
これは、複数のSystem.Net.Mail.MailAddress
オブジェクト、またはカンマで区切られたすべてのアドレスを含む単一の文字列を提供できます
private string FormatMultipleEmailAddresses(string emailAddresses)
{
var delimiters = new[] { ',', ';' };
var addresses = emailAddresses.Split(delimiters, StringSplitOptions.RemoveEmptyEntries);
return string.Join(",", addresses);
}
次のように使用できます
var mailMessage = new MailMessage();
mailMessage.To.Add(FormatMultipleEmailAddresses("[email protected];[email protected],[email protected]"));
電子メールをコンマ区切りの文字列("[email protected], [email protected]"
):
C#:
ArrayList arEmails = new ArrayList();
arEmails.Add("[email protected]");
arEmails.Add("[email protected]");
string strEmails = string.Join(", ", arEmails);
興味があるならVB.NET:
Dim arEmails As New ArrayList
arEmails.Add("[email protected]")
arEmails.Add("[email protected]")
Dim strEmails As String = String.Join(", ", arEmails)
複数のSystem.MailAdressオブジェクトを追加して、必要なものを取得します。
これを見つけてくれてありがとう、私は彼らがコレクションの最後に追加されるあなたと同じように考える文字列を追加しようとしていました。パラメーターは次のとおりです。
msg.to.Add(<MailAddress>)は、コレクションの最後にMailAddressを追加します
msg.to.Add(<string>)メールのリストをコレクションに追加します
パラメーターのタイプによって若干異なるアクションがありますが、これはかなり悪い形式だと思います。何かの分割メソッドAddStringListを好んだと思います。
このコードをアドレスに入れてください:
objMessage.To.Add(***addresses:=***"[email protected] , [email protected] , [email protected]")