3

要件は、私が作業しているアプリケーション内で、すべての電子メールを編集できるようにすることです。

明らかな解決策は、すべてのメッセージをデータベースに保存し、ユーザーがテキスト エディターを使用してメッセージを編集することです。

ただし、電子メール メッセージ内のプレースホルダーに関しては、これをどのように設計するのか疑問に思っています。

メッセージのプレースホルダーもデータベースに保存する必要があります。メッセージには多くのプレースホルダーを含めることができます。プレースホルダーは多くのメッセージに含めることができます。

ユーザーがプレースホルダーを挿入するときに、プレースホルダーのリストからプレースホルダーを選択できるようにすることができます。

電子メール メッセージにはプレースホルダー マーカー (通常は {0}、{1} など) を含める必要がありますが、表示目的のために、たとえば $WebsiteLink$ など、よりユーザー フレンドリーにする必要があります。一部のプレースホルダーは単純です。たとえば、展開によってのみ変化する Web サイトへのリンクや、ログインしているユーザーの名前などです。

他のプレースホルダはより複雑です。それらは、選択したチーム メンバーの名前など、特定の時点でデータベースから情報を取得することに依存します。したがって、このプレースホルダーでは、静的テキストを保持する代わりに、メソッドまたはイベントを呼び出してその情報を取得する必要があります。

これを行う方法が明確ではありません。手伝ってくれますか?

仕様が明確であることを願っています。そうでない場合はお知らせください。

4

4 に答える 4

3

簡単なString.Format交換については、 Phil Haack によるこのブログ投稿(およびフォローアップ) を参照してください。

そこにある解決策は、の代わりに{name}またはのような名前付きプレースホルダーを使用できることを意味します。{date}{0}

これで UI の問題がすべて解決するわけではありませんが、少なくともプレースホルダーはより明確になります。

于 2012-04-20T12:11:43.753 に答える
1

ゴスが提案したようにそれを行うことができます(またはこれを見てください、私はそれを使用していませんが、見栄えがします)、または他の方法があります:

1.HTML テンプレートを作成します。それを呼び出しましょうmailTemplate.html:

(気をつけて、テーブル...)

<table>
    <tr>
        <td> 
            <%MY_PLACEHOLDER%>
        </td>
    </tr>
</table>

templatePath2.次に、テンプレートファイルへの物理パスであると仮定して、メソッドでこれを簡単に使用できます。

var mailDefinition = new MailDefinition
                         {
                              BodyFileName = templatePath,
                              IsBodyHtml = true,
                              From = ... // you'll have to fill that
                         };
string replacementForPlaceholder = "Look at me!";
var replacements = new ListDictionary { { "<%MY_PLACEHOLDER%>", replacementForPlaceholder }};

string recipients = ... // well, specify recipients
var message = mailDefinition.CreateMailMessage(recipients, replacements, new LiteralControl());

メッセージを送信する準備ができました。HTML のテーブルなどにあまり夢中にならないのであれば、受信者が HTML を無効にしている場合、メールは適切にテキストに分解されます。

于 2012-04-20T10:23:17.667 に答える
0

先月、Razor 構文を使用する以下のテンプレート ベースの EmailModule を実装しました。あなたの場合はうまくいくはずです。実装は簡単です。

http://kazimanzurrashid.com/posts/use-razor-for-email-template-outside-asp-dot-net-mvc

カジ・マンズール・ラシッドに感謝します。

于 2012-04-20T10:06:24.337 に答える