問題タブ [postal]
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.
asp.net-mvc - 別のプロジェクトから mvc mailer を実行することは可能ですか?
私は現在、WebApi と一緒に MVC Web サイトを実行しており、電子メール機能を組み込むことを検討しています。
かなり大きなアプリケーションであり、MVC と WebApi の間でそのほとんどを再利用できるようにしたいので、ほとんどのロジックをサービス レイヤーに抽象化する非常に軽量なコントローラーがあります。
すべての例が Web プロジェクト内から実行されているため、MVCMailerを使用するのをためらっています。WebAPI を使用する電話アプリを作成した場合、メール機能を利用することはできません。
独自のプロジェクトから実行できるかどうか疑問に思っていますか? これは、私がやろうとしていることの非常に大雑把な描写です。
MVCMailerまたはActionMailerのいずれかを技術的に両方.Web
とも.WebApi
MVC4 プロジェクト として抽象化できますか?
そうでない場合は、スタンドアロン バージョンの Actionmailer.netまたは同等のPostalを使用しますが、機能は少し削減されます。
編集:詳細
もう少し考えてみると、mvc と webapi Web サイトの両方で自動的に展開されるように、電子メール ビューに対していくつかの派手なコピー ロジックを実行する必要があるため、実行するのは難しいように思えます。
おそらく、電子メールを独自の Web サイトに分離し、サービス層に電子メールを送信するための Web 要求を作成させ、適切に抽象化する方がよいでしょう。
そうすれば、すべてのサーバーにsmtpをセットアップする必要がなく、1つのサーバーに電子メールを展開するだけでよいと思います。コメント歓迎
関連する質問
c# - RuntimeBinderException、Razor がサブフォルダーの _ViewStart を取得しない
のdbconfigに基づいてレイアウトが設定されているサイトがあります
そして、独自の ViewStart を使用して Emails フォルダーをビューに追加した場合 ( Postal Nuget Package の場合)を除いて、すべて正常に機能しています
を含む
HTML形式のメールをコードで送信するために使用されます
ただし、この行で例外が発生します
~/Views/Emails からではなく ~/Views から ViewStart を取得する理由についての指針はありますか?
c# - 電子メールが送信されているにもかかわらず、ページが電子メールの送信をタイムアウトする
この問題は私を困惑させました。この質問は Server Fault に移行する必要があるかもしれませんが、プログラミング コンポーネントがあるので、そこから始めることにしました。また、私たちのインフラストラクチャ チームは、自分たちの側ではすべてがうまくいっていると熱心に信じていますが、それが常に意味を持つとは限りません。
とにかく、成功ページにリダイレクトする前に、Postal nuget パッケージを使用して 2 つの別々の電子メールを送信する単純な GET-POST-Redirect アクションがあります。これはかなり基本的なものです。アクションは非同期でawait email.SendAsync()
、Postal API から使用しています。
フォームが送信されると、最初の電子メールがすぐに受信トレイに届きますが、コードawait email.SendAsync()
は次の行に移動する前に 15 ~ 20 秒間、その行でハングします (デバッガーで確認)。次に、2 番目の電子メールを送信します。この電子メールはすぐに受信トレイに届き、送信が成功したかどうかに関係なく、リダイレクトのある行に移動する前に、コードがその行で 15 ~ 20 秒間ハングします。本番環境では、電子メール送信後のこの遅延が 2 つの電子メールを合わせて、リダイレクト応答が送信される前に接続がリセットされます。確かに、ページのタイムアウトを増やすことはできますが、それでもユーザーが応答を受け取るまでに 1 分間の長い遅延が発生するため、問題は実際には解決されません。
と同期してメールを送信しようとしましemail.Send()
たが、同じ動作が発生します。Postal のソースを調べたところ、非同期メールを送信するために SMTPClient の周りにいくつかのカスタム ラッピングが行われていますが、同期Send
メソッドを使用した標準の古い C# メール送信以外には事実上何もありません。
また、サイトが実行されているサーバーにバインドされていません。本番環境とローカルでデバッグするときの両方で同じ動作が見られるためです (ただし、両方とも同じ本番 Exchange サーバーに接続しています)。
Exchange サーバーが何らかの「完了」応答を送信するのを待っているように動作しますが、SMTP について知っている限り、そのようには機能しません。電子メールを SMTP サーバーに送信するだけで、SMTP サーバーが本来の処理を実際に実行することを信頼して、陽気に作業を続行する必要があります。
この時点でこれをデバッグし続ける方法がわからないので、どんなアイデアでも大歓迎です。他に何をテストまたは試すことができますか?
アップデート
Wireshark を試すという @MichaelEvanchik の提案のおかげで、実際には Exchange サーバーが原因で 30 秒の遅延が発生していることを明確に確認できました。送信する電子メールの最後のビットを受信し、30 秒後に最終的にクライアントに「配信のキューに入れられました」と応答します。この時点で、クライアントは最終的に QUIT し、コードが再開されます。だから、私はそれをインフラストラクチャに戻しています。
更新 #2
そのため、実際にはコネクタに 30 秒の遅延が発生し、電子メールが配信待ちのキューに入れられただけでなく、実際に送信されたことを確認できるようになったようです。個人的には、そういうのはそもそも「配信待ち」という点を打ち負かしていると思いますが、とにかく、実際に送信されたという確認は必要なく、Exchangeサーバーによって受信されただけなので、インフラストラクチャは削除されています遅延。
asp.net-mvc - Postal と Unity での依存性注入の例外
私の ASP.NET Web MVC コントローラー (v5.1) では、 Postal (v0.9.1) でIEMailServiceを使用するように切り替えたかったので、コントローラーで次のようにしました。
私の Unity (v3.0) コンテナーのセットアップ:
しかし、私はこの例外を取得します。これは意味がありません。
Unity は実際に私に何を伝えようとしているのでしょうか?
スタックトレース:
asp.net-mvc-4 - Postal mail MVC 4 Razor Mobile View Engine を使用するとエラーが発生する
注文確認メールの送信に郵便を使用しています。MVC4 プロジェクトです。コードは確認メールを正しく送信していました。
最近、プロジェクトに MVC モバイルを追加しました。ユーザーがモバイルデバイスを使用しているときに確認メールを送信する場合を除いて、すべてが機能します。これは注文確認クラスです:
そして、次のように呼び出されます。
Global.asax.cs ファイルで、モバイル デバイスを検出し、次のように表示モードを挿入します。
表示されるエラー メッセージは、一般的な「オブジェクト参照がオブジェクトのインスタンスに設定されていません」です。以下にスタック トレースと、エラー コードが生成されたときのイメージを示します。
postal がビューを生成しているときに、global.asax ファイルの application_start にヒットし、useragent プロパティが null であるため、エラーが発生するようです。application_start プロシージャの特定のコードの周りに try catch ブロックを配置しようとしましたが、うまくいきません。
表示モードを気にしないように MVC または Postal に指示する方法を教えてください。助言がありますか?
asp.net-mvc - Layout parse Headers をメール本文として Postal MVC を使用する
Postal を使用して Layout を使用して電子メールを送信すると、ヘッダーが解析されず、メール メッセージに含まれているようです。
Views/Emails/_ViewStart.cshtml
Views/Emails/_EmailLayout.cshtml
ビュー/メール/ResetPassword.cshtml
ビュー/メール/ResetPassword.html.cshtml
メールを受信すると、To、From、Subject、および Views のすべてのヘッダーが本文に含まれています。
誰でも正しく行う方法を知っていますか?
UPDATED(Andrewに感謝)、これは機能します:
Views/Emails/_EmailLayout.cshtml
ビュー/メール/ResetPassword.cshtml
ビュー/メール/ResetPassword.html.cshtml