問題タブ [smtpclient]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - SmtpClient クラスが Web.Config ファイルから既定のパラメーターを取得しない
構成ファイル:
私はすでに defaultCredentials="true" を試しましたが、次のメッセージを受け取りました:
System.FormatException: SMTP サーバーが無効な応答を返しました。
問題を解決するには?
c# - C# アプリケーションから電子メール メッセージを送信するにはどうすればよいですか?
これは私が書いたコードです:
動いていない。「client.Send(mail)」の行で、「メールボックスを利用できません。サーバーの応答は (MYLOCALCOMPUTERNAME) [MY LOCAL IP]:3045 は現在、中継が許可されていません。」という例外が発生します。
connectAccess.Access は "Connect" を返します (これが必要かどうかはわかりません... トラブルシューティング プロセスを開始するために追加しました)。
これは、ローカル マシンを何らかの方法で構成する必要があるということですか? アプリを他の人のマシンにデプロイする場合はどうなりますか? そこにローカル構成が必要ですか?アプリケーションから「フィードバックを送信」タイプのリンクを作成しようとしています。
(注:私の実際のアプリケーションでは、「to」と「from」の両方で実際のメールアドレスを使用しています。私のsmtpは、実際には私のURL / Webサイトをホストする場所の私のsmtpアドレスです)
ありがとう!
-アディーナ
c# - client.Send() を呼び出す前に SmtpClient をテストできますか?
これは、先日メールの送信方法について質問したことに関連しています。
私の新しい関連する質問はこれです...私のアプリケーションのユーザーがファイアウォールの背後にいる場合、または client.Send(mail) という行が機能しないその他の理由がある場合はどうなりますか...
行の後:
送信する前にクライアントをテストするためにできることはありますか?
これをtry/catchループに入れることを考えましたが、テストを行ってから、smtpなどにアクセスできないというダイアログをポップアップしたいと思います。
(私も、潜在的に私のアプリケーション ユーザーも、ファイアウォール設定を調整する能力を持っていないと推測しています。たとえば、彼らは職場でアプリをインストールし、職場でインターネットを制御することはできません)。
-アディーナ
.net - .NET SMTPClient - 保留中の送信メールはどこに保存されますか?
System.Net.Mail.SMTPClent 経由で送信される電子メールをキューに入れている場合、このメールはどこにありますか? Windows SMTP クライアントでは、C:\inetpub\mailroot フォルダーにあります。.NET クライアント用の同様のフォルダーはありますか?
編集:これは例です。XP コンピューターで送信 SMTP サーバーをオフにしてから、多数の電子メールを送信するアプリケーションを実行すると、.NET SMTPClient.Send 呼び出しが成功するため、電子メールはどこかにキューに入れられます。数時間後、ローカルの SMTP サーバーを起動すると、メールが突然飛び出します。その間はどこに?ローカル SMTP サーバーはありませんが、Vista デスクトップでも同じ動作が発生します。ファイアウォールでポート 25 をブロックすることで機能を複製でき、メールがどこかでキューに入れられます。どこ?
この質問の理由は、私が持っているサーバーで SMTP サービスを再度有効にしたいのですが、その間に何がキューに入れられたのかわかりません。サービスを有効にします。そうすれば、顧客は非常に古いキューに入れられた電子メールを突然受け取ることはありません。
編集:明らかに、私は何について話しているのかわかりません。Vistaでこれを行うと:
IIS ピックアップ フォルダーがないため、例外が発生します。「Mail.SmtpDeliveryMethod.Network」に変更すると、SMTP サーバーが実行されていないため、すぐに例外が発生します。サーバー 2003 でこれをテストしますが、過去には両方とも機能していたと断言できました。さらにテストを行い、必要に応じて質問を変更します。
c# - SmtpClient.SendAsync を 1 回しか呼び出せないのはなぜですか?
SmtpClient を使用して .NET で (完全に正当なスパム以外の目的で) 通知サービスを作成しようとしています。最初は各メッセージをループして送信しましたが、これは遅いため、速度を改善したいと考えています。そのため、「SendAsync」の使用に切り替えましたが、2 回目の呼び出しで次のエラーが発生しました。
私はこれを読んで、MS が System.Net.Mail を無効にして、大量のメーラーを防いだことを意味していると解釈しました。これは正しいです?もしそうなら、.NET でこれを行うためのより良い方法はありますか?それでも各電子メールの結果をログに記録できます (これはクライアントにとって重要です)。そうでない場合、SendAsync を 1 回しか呼び出せないのはなぜですか?
asp.net - Web.config で SmtpClient の SSL を有効にする方法
web.config から EnableSSL を設定する方法はありますか?
このプロパティをコードで設定することもできますが、Simple Mail Web Event や、既定の Smtp サーバーを使用するその他のクラスでは機能しません。何か案は?
.net - SpecifiedPickupDirectory を使用して BCC が Exchange 2007 から送信されたことがない
Exchange 2007 ピックアップ ディレクトリを使用して、ASP.NET アプリケーションからメールを送信していますSystem.Net.Mail.SmtpClient
。したがって、私は使用してSmtpClient.DeliveryMethod = SmtpDeliveryMethod.SpecifiedPickupDirectory
います。メールは問題なく送信されますが、BCC がまったく機能していないことに気付きました。ピックアップ フォルダに配置されているファイルは正しい設定になっているようですが、Exchange は X-Receiver リストを無視しています。作成される EML ファイルのサンプルを次に示します。
contact@ と lindsey@ は BCC 受信者です。ネットワーク送信を使用すると、正常に動作します。BCC は、ピックアップ ディレクトリの操作を停止するだけです。ご存知のように、私は Windows Server 2008 と ASP.NET 3.5 / C# を使用しています。
回避策
Exchange 2007 は X-Receiver を無視し、代わりに Bcc: を期待しているようです。そこで、私は mailMessage.Headers.Add("Bcc", bccList) を実行することにしました。ここで、bccList はセミコロンで区切られた電子メール アドレスのリストです。それはうまくいきます。
しかし、Chase Seibert が指摘したように、電子メール クライアントのメッセージのヘッダーを見ると、すべての X-Receiver が一覧表示されています。ただし、Bcc は取り除かれているため、受信者から隠されています。したがって、誰かがメッセージを開いてすべての Bcc を見る可能性がある Bcc の効果が得られます。X-Receivers リストを抑制する最善の方法は、mailMessage.Bcc プロパティに何も含めないことだと思います。
c# - 電子メール送信プロセスのスロットル速度
申し訳ありませんが、タイトルが少しくだらないので、正しく表現できませんでした。
編集:これはコンソールc#アプリであることに注意してください
私はそのように機能するシステムのプロトタイプを作成しました(これは大まかな疑似コードです):
メールを送る:
SendComplete:
明らかに、この設定は理想的ではありません。最初のコレクションにたとえば10,000レコードがある場合、行をステップスルーできる限り迅速に、smtpclientの10,000インスタンスをかなり短い順序で新規作成します。
私の理想的なエンドゲームは、10通の同時メールを一度に送信することです。
ハッキーな解決策が思い浮かびます。SendAnEmail()が呼び出されると増加し、SendCompleteが送信されると減少するカウンターを追加します。最初のループでSendAnEmail()が呼び出される前に、カウンターをチェックします。カウンターが高すぎる場合は、少しの間スリープしてから、もう一度チェックします。
それがそんなに素晴らしいアイデアかどうかはわかりませんが、SOハイブマインドがこれを適切に行う方法があると考えています。
私はスレッディングについてほとんど知識がなく、ここでそれが適切な使用法であるかどうかはわかりません。たとえば、バックグラウンドスレッドでメールを送信する場合は、最初に子スレッドの数をチェックして、使用されているスレッドが多すぎないことを確認します。または、何らかのタイプの「スレッドスロットリング」が組み込まれている場合。
アップデート
スティーブンA.ロウのアドバイスに従って、私は今持っています:
- 私の電子メールと一意のキーを保持する辞書(これは電子メールのキューです
- 辞書に入力するFillQueメソッド
- バックグラウンドスレッドであるProcessQueメソッド。キューをチェックし、キュー内のすべての電子メールをSendAsycsします。
- キューから電子メールを削除するSendCompletedデリゲート。そして、FillQueを再度呼び出します。
この設定にはいくつか問題があります。バックグラウンドスレッドでボートを逃したと思いますが、辞書の各アイテムに対してこれらの1つをスポーンする必要がありますか?電子メールのキューがスレッドの終わりを空にした場合、より良い単語がないためにスレッドを「ぶらぶら」させるにはどうすればよいですか。
最終更新
'while(true){}'をバックグラウンドスレッドに入れました。キューが空の場合、数秒待ってから再試行します。キューが繰り返し空になる場合は、しばらくの間「中断」してプログラムを終了します...正常に動作します。私は「while(true)」ビジネスについて少し心配しています。
.net - .NET MailMessage と SMTPClient がスパムとしてタグ付けされていますか?
基本的な HTML メールを準備しており、適切な HEAD タグと BODY タグを含む基本的な HTML テンプレートを使用していますが、何らかの理由で、ユーザーが私からメールを受け取るのに問題があります。
私は ASP.NET の MailMessage および SMTPClient オブジェクトを使用しており、メールは正常に送信されます。テスト メッセージを自分宛てに受信でき、ほとんどのユーザーはそれらを受信していますが、一部のサイトは私のメッセージをスパムとしてフラグ付けしています。
複数の受信者などではなく、一度に1つずつ送信しています。
Thunderbird から同じメール サーバーに同じアカウント経由でメッセージを送信すると、すべて問題ありません。しかし、私が Web 経由で作成したものは、ジャンクとしてタグ付けされることがあります。
私は自分のホストに確認し、メールサーバーを「Localhost」に修正しました(これがウェブサーバーがメールサーバーを認識する方法です)。
メッセージが明確に伝わるようにするためにできること、またはすべきことはありますか? フラグ、属性など?
ティア!