1

次のコードを使用してメールを送信しようとすると、上記のエラーが発生します。

2つのメールが送信されています。最初のメールは正常に配信されているようです。以下のコードは機能していないようです。

誰か助けてもらえますか?

        using (var mail = new MailMessage(fromEmail.Trim(), ToEmail.Trim()))
        {
            mail.IsBodyHtml = true;

            bodyText = bodyText.Replace("**Message**", Message);

            // populate the message
            mail.Subject = subject;
            mail.Body = bodyText;

            // send it
            var smtpClient = new SmtpClient();
            smtpClient.Send(mail);
        }

構成:

  <system.net>
    <mailSettings>
      <smtp from="test@foo.com">
        <network defaultCredentials="true" port="25" host="127.0.0.1" password="" userName=""/>
      </smtp>
    </mailSettings>
  </system.net>
4

1 に答える 1

3

をブロックMailMessageの主題として配置する代わりに、主題を作成してみてください。usingSmtpClient

編集: .net のバージョンが 4.0 未満の場合は、別のメッセージを送信する前に、smtp クライアントが確実に破棄されるように、いくつかの仕上げを行う必要があります。

usingブロックがインスタンス メソッドの本体も表していると仮定すると、素朴なテストは次のようになります。

  1. 包含クラスのインスタンスを作成する

  2. 上記のクラス メソッドへの呼び出しを介して最初のメッセージを送信します。

  3. 参照を null に設定します (つまり、SmtpClient が実際にマーク/破棄されていることを確認します。さらにチェックするために、インスタンスを手動で破棄する必要がある場合があります)。

    Jeff Tucker は、値を次のSmtpClient.Timeout値に設定することを提案し2ました。詳細については、彼のコメントを参照してください。

  4. 同じクラスの新しいインスタンスを作成する

  5. 2 番目のメッセージを送信する

それに続いて (それが機能すると仮定して)、満足するまで、手順を繰り返してロジックを改良および絞り込むことができます。

于 2012-07-12T18:36:44.963 に答える