2013-08-29 3 views
6

System.Web.Helpers.Webmail.Sendについては、StackOverflowに関するいくつかの類似の質問がありますが、何が起こっているのかについては適切な説明がありません。 to:パラメータについて複数の受信者についてWebMail.Sendの何が問題になっていますか?

the documentation言う:

の受信者または受信者のメールアドレス。複数の受信者をセミコロン(;)で区切ります。

"use a comma because the docs are wrong"、または「セミコロンを使用する」、または"maybe it's an environment issue"と答えています。

私はいくつかのシナリオを試してみた

WebMail.Send(
    to: "[email protected],[email protected]", 
    from: "[email protected]", 
    subject: "Some Automated Email", 
    body: "<strong>Lorem Ipsum</strong>", 
    isBodyHtml: true 
); 

コード:

[email protected];[email protected]

んが、メールは受け取っていない:An invalid character was found in the mail header: ';'.

[email protected]; [email protected]

のみ最初の受信者は、両方の電子メールの両方が電子メールを受け取っjoe.bloggs[email protected], [email protected]

を受け取っ

[email protected],[email protected]

メールを受信

[email protected], [email protected]

まず、電子メールを受け取ったが、キャッチされない例外:Mailbox unavailable. The server response was: 5.7.1 Unable to relay

[email protected], [email protected]

ません電子メールは受け取っ:An invalid character was found in the mail header: ','.

は、誰もがこの上でいくつかの光を当てることができますか?私は実際には別のサーバー上でより多くのbizzare動作をしています。上記のテストではExchangeを使用していますが、hMailServerでは実際に異なる動作が発生しました。[email protected],[email protected]は、サーバーエラーがなくサイレントエラーが発生し、hMailServerログには送信メールがありませんでした。 hMailServerのシステムでは、私は単一のアドレスでしか成功しませんでした。

答えて

2

これはおそらく、接続しているさまざまなリレーと、それらが受け入れるさまざまな方法と関係があります。デリミタ文字はそれぞれの特定のメールサーバーに関係するだけでなく、電子メールアドレスも同じです(異なるリレーは特定の電子メールを受け入れるように構成され、悪質な電子メールに対してさまざまなエラーコードが返されるため、これは様々な例外をスローする)。

System.Net.Mail名前空間には、受信者ごとにAdd()を呼び出すことができるTo、CC、およびBccのMailAddressCollectionオブジェクトを含むMailMessageオブジェクトがあります。

私はlibraryを使用してメールを(中継なしで)送信しています(すべてBccになります)。コードをチェックすることができます。ライブラリを使用する場合は、IPアドレスを良好な状態に保ち、リレー(PTRとAレコードすべての設定)と同じ方法でDNSレコードがすべて設定されていることを確認してください。

1

私が理解しているように、ドキュメントの間違いは考えられるシナリオです。私はこのアセンブリを持っていないので、私はILSpyでそれを確認することはできませんが、明らかにヘルパークラスは単にSystem.Net.Mailを使用します。 4つのパラメータのオーバーロードを経て、私はこの内部メソッドに行きます。

internal Message(string from, string to) : this() 
{ 
    //... 
    this.to = new MailAddressCollection 
    { 
     to 
    } 
} 

は結果として、それは単にcomma区切り文字を必要とする新しいMailAddressCollectionを作成します。セミコロン(Helperクラス内で行われていないが、そうでないと思われない限り)to文字列がセミコロンを置き換えたり操作したりすることはありませんでした。

関連する問題