web-dev-qa-db-ja.com

Razor(.cshtml)テンプレートを使用して送信者ライブラリに電子メールを送信します。 .netコア2.0

私はこの時代を探して、埋め込まれたソースファイルから電子メールテンプレートを使用して電子メールを送信するための明確な解決策を探していましたが、それでもこれに対する明確な答えは見つかりませんでした。

かみそりのビューは、電子メールのテンプレートとして使用するのに非常に便利です。

ビュー(cshtmlファイル)と各ビューのモデルを含むパッケージとしてクラスライブラリを作成しようとしています。そのクラスライブラリには、EmailSenderとしてのサービスもあります。

次に、そのクラスライブラリは、電子メールを送信するためにWebアプリケーションで参照されます。ライブラリは明らかに他のプロジェクトで再利用できます。

EmailSenderサービスには、メールの種類ごとにメソッドがあります。 Webアプリケーションはモデルを渡し、クラスライブラリは電子メールコンテンツを準備し(モデルを解析して表示し)、文字列コンテンツを返します。その文字列の内容はhtmlbodyメールとして送信されます。

私はこのRazorLightを見てきました library 。これは、コア2.0ではまだ完了または更新されていないようです。

私が交差した別の解決策は ここ です。このアプローチの問題は、電子メールテンプレートにモデルプロパティが含まれていないことです。基本的に、テンプレートには{0}、{1}などが含まれ、フォーマットを使用してモデルデータをテンプレートに解析します。テンプレートに多くのパラメータがある場合、どのパラメータがどれであるかを思い出すのは難しいでしょう。

私は最近この記事を見ました ASP.NET Core 2.1.0-プレビュー1:クラスライブラリのRazor UI

Core2.1.0でクラスライブラリにビューを追加できるようになることを示しています。これが解決策でしょうか?

それとも、これを達成するためのより良いアイデアがありますか?

7
akd

私もこの種の問題に取り組んでいて、ウェブ上で解決策を見つけることができませんでした。それで、いくつかの調査の後、私はこの種のソリューションを実装することに成功し、ブログを書きました。あなたの解決策に合うかどうか、以下のリンクをチェックすることができます。

P.S.クラスライブラリでRazorUIを使用することも可能な解決策かもしれませんが、私はまだ試していません。

https://medium.com/@ognjanovski.gavril/net-core-email-sender-library-with-razor-templates-cshtml-contained-in-it-71c48bef1457

1