2017-06-22 47 views
0

我目前在Razor ASP.Net MVC工作。这里我有一个HTML view,命名为客户付款,它是根据一些计算生成的,在RAZOR中显示,并显示在HTML dialog中。发送HTML视图作为电子邮件附件在Asp.Net MVC剃须刀

I want to email this View

我想给这个Html View作为电子邮件附件。但在这里,我感到困惑,我必须将HTML View转换成的jQuery,然后发送给Controller一方,或者是否存在一些更有效的方法来执行此操作。

我还有coded发送简单的电子邮件,没有任何附件,在C#,但卡住了这一点。

最好的建议将不胜感激。 :-)

+1

[如何呈现PDF格式的ASP.NET MVC视图]可能的副本(https://stackoverflow.com/questions/1324597/how-to-render-an-asp-net-mvc-view-in -pdf格式) –

回答

1

由于正常的邮件,你必须发送邮件的正文内容像下面

你的C#代码。

string _FilePath = HttpContext.Server.MapPath("Activation.txt"); 
StreamReader sr = new StreamReader(_FilePath); 
string body = sr.ReadToEnd(); 
sr.Close(); 
sr.Dispose(); 

发送上述体在电子邮件的正文

您Activation.txt文件中的代码将是一个模板,如下面只是身体标记

<body style="margin: 1% 10%;"> 
    <table style="position:relative;background-color: whitesmoke;padding-bottom: 20px;text-align: center;width: 100%;"> 

     <tbody class=""> 
      <tr class=""> 
       <td style="position:relative;top:20px;padding-left: 25px;padding-right: 25px;margin-right: auto;margin-left: auto;" width="400" align="center" bgcolor="whiteSmoke"> 



        <img src="[HLINK]" height="70" width="150" alt="image cannot displayed "> 

       </td> 
      </tr> 


      <tr> 
       <td width="400" align="center" bgcolor="whiteSmoke"></td> 
      </tr> 

      <tr> 
       <td align="center" style="position: relative; top: 11px; padding-left: 25px; padding-right: 25px; margin-right: auto; margin-left: auto;" width="470" bgcolor="whitesmoke"> 
        <h2 style=" 
    color:#f44336; 
    font-family: WeblySleek UI,Segoe UI,Helvetica Neue,Arial,sans-serif"> 
         Hey thanks for joining<h2 /> <h4 style="font-family: WeblySleek UI,Segoe UI,Helvetica Neue,Arial,sans-serif;">Welcome to Portal! Before you get started, please verify your email address below </h4> 
       </td> 
      </tr> 

      <tr bgcolor="whitesmoke" style="position:relative;top:9px;"> 
       <td align="center" style="position:relative;top:-4px;padding-left: 25px;padding-right: 25px;margin-right: auto;margin-left: auto;"> 

        <a style="position:relative;display: block;width:150px;height: 20px;text-align:center; text-decoration:none;background:#f44336;padding:10px;border-radius: 5px;color: white;font-family: WeblySleek UI,Segoe UI,Helvetica Neue,Arial,sans-serif;" href="[HLink]">Verify Email Address</a> 
       </td> 
      </tr> 


      <tr> 
       <td style="position:relative;top:3px;padding-left: 25px;padding-right: 25px;margin-right: auto;margin-left: auto;" bgcolor="whitesmoke" align="center" width="400"> 
        <span style="padding-left:0.3cm;font-family: WeblySleek UI,Segoe UI,Helvetica Neue,Arial,sans-serif;">Thank you for visiting Us. It is the ultimate gift of choice.You can send to a friend or loved one with a selection of brands to pick from in various categories such as fashion, beauty, sports, food, entertainment etc. <span> 
       </td> 
      </tr> 


      <tr> 


       <td style="position:relative;padding-left: 25px;padding-right: 25px;margin-right: auto;margin-left: auto;" bgcolor="whitesmoke"> 
        <h2 style="color:#f44336;font-family: WeblySleek UI,Segoe UI,Helvetica Neue,Arial,sans-serif;" align="center">Our Most Celebrated Brands</h2> 



      </tr> 
      <tr> 
       <td style="position:relative;top:-2px;padding-left: 25px;padding-right: 25px;margin-right: auto;margin-left: auto;" align="center" bgcolor="whitesmoke" width="400" style="padding:10px;"> 

        <b style="font-family: WeblySleek UI,Segoe UI,Helvetica Neue,Arial,sans-serif;">Contact Us:</b>&nbsp;&nbsp;&nbsp;<img src="http://img/phone.png">&nbsp;&nbsp;<span>987654321</span>&nbsp;&nbsp;<img src="http://img/email.jpg">&nbsp;&nbsp;<span styl="font-family: WeblySleek UI,Segoe UI,Helvetica Neue,Arial,sans-serif;">[email protected]</span> 
       </td> 
      </tr> 
      <tr> 
       <td style="background-color:whitesmoke;position:relative;text-align: center;"> 
    <span> 
     <a style="position:relative;padding:10px 30px;text-align:center; text-decoration:none;background:#4e69a2;border-radius: 5px;color: white;font-family: WeblySleek UI,Segoe UI,Helvetica Neue,Arial,sans-serif;" href="#">Facebook</a> 

     &nbsp;&nbsp; 
     <a style="position:relative;padding:10px 30px;text-align:center;text-decoration:none;background:#c32f10;border-radius: 5px;color: white;font-family: WeblySleek UI,Segoe UI,Helvetica Neue,Arial,sans-serif;" href="#">Google</a> 
    </span> 
</td> 
      </tr> 
     </tbody> 
    </table> 
</body> 

您还可以动态地添加/替换要在电子邮件中发送的数据 在后端添加以下代码

body = body.Replace("[HLink]", YOUR-DATA); 
+0

但是我们为什么要这样做!相反,我们将视图转换为'jQuery'中的'.pdf'并将其传递给Controller,以便将其作为电子邮件附件发送。这不是简单的方法! –

+1

如果我们发送了css样式将不会应用于电子邮件正文中,则所有内容都应为内嵌样式。和更多的电子邮件正文应在身体标记,因为您的视图可能只有div标记,更多的所有电子邮件模板应保存在单独的部分 –

+0

检查我编辑的答案,如果你想动态添加任何东西 –

0

首先使用Rotativa将您的视图转换为PDF,然后将其作为附件通过电子邮件发送。

这是你的方法将视图转换为PDF

public void SenRequestByEmail() 
    { 
    string ReqId="CT001"; 
     try 
     { 
      using (var stream = new MemoryStream()) 
      { 
       //methodto bind details to your model 
       var res = dealerService.BindReqToPrint(ReqId); 
       //_PrintActivationRequest is your View name here and res is the object of the model you are using at your view 
       ViewAsPdf pdf = new ViewAsPdf("_PrintActivationRequest", res) { FileName = "DeviceActivationRequest.pdf" }; 
       //convert the pdf into array of bytes 
       byte[] bytes = pdf.BuildPdf(this.ControllerContext); 
       string fileName = string.Format("DeviceActivationRequest_{0}.pdf", DateTime.Now.ToString("dd_MMM_yy_hh:mm")); 
       SendDeviceActivationRequest(new MemoryStream(bytes), fileName); 
      } 
     } 
     catch (Exception ex) 
     { 
     } 

    } 

方法来发送电子邮件。

public void SendDeviceActivationRequest(Stream ms, string fileName) 
    { 
      //Here write your code to send Email and attach the pdf file as shown in below code. 
      MailMessage mail = new MailMessage(); 
      System.Net.Mail.Attachment attachment; 
      attachment = new System.Net.Mail.Attachment(ms,fileName , "application/pdf"); 
      mail.Attachments.Add(attachment); 
} 

到视图转换为PDF Follow this Link

希望它能帮助!

相关问题