2017-07-14 37 views
0

我正在使用「System.Net.Mail」在我的代碼中發送電子郵件。它允許電子郵件正文以HTML格式發送。我需要使用我的模型和bootstrap中的數據自定義和裝飾我的電子郵件。使用HTML和模型從MVC定製電子郵件頁面

所以,我在這裏嘗試創建HTML頁面並嘗試將其與Model中的數據集成,然後將HTML頁面作爲字符串傳遞給電子郵件對象的「主體」。

這是否有意義或有任何其他方式可以做到這一點?我想構建一個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 -basic-generating-your-first-email/ – juunas

+0

這個庫被證明是過時的:(沒用的。 – Ponni

回答

0

我一直使用這個工具http://aboutcode.net/postal。試一下,它會爲你節省很多編碼。

+0

你有沒有一個可行的例子?不能得到這個工作! – Ponni

+0

通過網站,很容易指南。 –

0

下面是一個例子。我甚至包含了一些CSS來展示你如何設計你的電子郵件。 「項目」是我循環創建網格的模型。

CSS支持在大多數電子郵件客戶端中受到限制,因此您可能無法使Bootstrap正常工作,但可以嘗試。如果沒有,您仍然可以完成類似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); 
相關問題