2012-04-20 9 views
3

必要条件は、私が作業中のアプリケーション内で、すべての電子メールを編集できるようにすることです。電子メールメッセージのプレースホルダのコーディング方法は?

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

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

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

プレースホルダを挿入するときにプレースホルダを選択できるようにすることができます。

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

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

私はこれを行う方法がわかりません。手伝ってくれますか?

仕様が明確であることを希望しますか?

+0

電子メール本文には何らかのパターンが必要ですか? –

+0

私は、ユーザーが電子メール本文にプレースホルダを挿入する方法を考える必要があります。たぶん、プレースホルダのリストから選択してドラッグアンドドロップすることはできますが、それはウェブアプリにとっては難しいと思われます。 – arame3333

+0

Imho、最良の解決策は、ユーザーに特別なタグを使用することです。 –

答えて

1

あなたはゴート族が示唆されているようにそれを行うことができます(あるいはthisを見て、私はそれを使用していないが、それは甘い見えます)のいずれか、またはその他の方法があります:

1.You HTMLテンプレートを構築、のはmailTemplate.htmlそれを呼びましょう:

(...、テーブルに注意)

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

2.Thenあなたは、単にtemplatePathがあなたのテンプレートファイルへの物理パスであると仮定すると、この方法でこれを使用することができます。

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を無効にした場合、メールはテキストに正常に劣化します。

3

簡単にはString.Formatの交換については、Phil Haackのthis blog post(およびそれ以降)を参照してください。

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

これはUIの問題全体を解決するものではありませんが、少なくともプレースホルダは明確です。

+0

いいリンクがあります!ありがとうございました。 – arame3333

0

C#で補間がサポートされるようになりました。それでも気になる人は、hereをご覧ください。

関連する問題