2017-07-14 4 views
0

"System.Net.Mail"を使用して自分のコードで電子メールを送信しています。電子メール本文をHTMLとして送信することができます。自分のモデルのデータとブートストラップを使って電子メールをカスタマイズして飾る必要があります。HTMLとモデルを使用してMVCからのカスタム電子メールページ

ここで私はHTMLページを作成し、それをModelからのデータと統合しようとしていて、電子メールオブジェクトの "body"にHTMLページを文字列として渡そうとしています。

これは意味があるのですか、それとも他のやり方がありますか?

P.S:モデルのデータに基づいて行を動的に取得するHTMLテーブルを作成しようとしています。

+0

これは役に立ちますか? https://stackoverflow.com/a/33124638/1658906 http://mehdi.me/generating-html-emails-with-razorengine-introduction/ http://mehdi.me/generating-html-emails-with-razorengine最初のメールを作成する/ – juunas

+0

使用されたライブラリは廃止されました:(役に立たない。 – Ponni

答えて

0

私はこのツールを常に使用していましたhttp://aboutcode.net/postal。それを試して、それはあなたに多くのコーディングを保存します。

+0

実例はありますか?これを動作させることはできません! – Ponni

+0

は、ガイド。 –

0

例を示します。私はあなたの電子メールをどのようにスタイルすることができるかを示すCSSをいくつか含んでいます。 「プロジェクト」は私がグリッドを作成するためにループしているモデルです。

ほとんどの電子メールクライアントではCSSサポートが制限されているため、ブートストラップを正常に動作させることができない場合がありますが、試してみることもできます。そうでない場合でも、Bootstrapのようなレスポンシブデザインを実現できます。下の例は、ページのサイズが変更されたときに中央揃えと100%幅のままです。

var projects = db.Projects.Select(p => new { p.Name, p.Description }); 

var grid = new StringBuilder(); 

foreach (var project in projects) 
{ 
    grid.Append([email protected]"<tr'> 
      <td>{project.Name}</td> 
      <td>{project.Description}</td> 
     </tr>"); 
} 

var body = [email protected]" 
    <style> 
     body {{ color: #444 }} 
     h2 {{ margin-top: 0; margin-bottom: 0 }} 
     .container {{ text-align: center }} 
     table {{ margin-left: auto; margin-right: auto; font-size: 20; width: 100% }} 
     .heading {{ font-weight: bold; background-color: #f1f4ff }} 
     td {{ padding-top: 8px; padding-bottom: 8px; padding-left: 16px; padding-right: 16px }} 
    </style> 

    <div class='container'> 
     <h2>Hello from Mail</h2> 

     <table class='grid' cellpadding='0' cellspacing='0'> 
      <tr class='heading'> 
       <td>Project Name</td> 
       <td>Project Description</td> 
      </tr> 
      {grid} 
     </table> 
    </div> 
"; 

client.Send(mail); 
関連する問題