2011-09-22 75 views
1

是否可以发送部分页面,将IFrame的内容或面板的内容称为电子邮件中的附件?通过电子邮件发送部分页面作为文件附件Asp.Net

我使用动态尺寸标注动态创建制造图纸页面。我希望用户能够点击电子邮件按钮并将其作为附件发送给供应商。

+0

因此,您想要将.htm文件附加到电子邮件并发送它们吗? “制造图纸页面”听起来有点像你想发送图像文件。 –

+0

那么我也有标签和表格围绕图像和dipslays相应的尺寸数据。该数据按用户选择进行动态更新。 – TroyS

+0

然后,我需要将所有这些转换为文件并在用户单击发送按钮时发送给供应商。 – TroyS

回答

1

您可以使用Server.Execute执行页面,在TextWriter中捕获输出,然后使用该字符串为您的电子邮件构建html附件。 server.execute仍然在当前的用户上下文中执行,所以如果你将它们的选择放在Session中,那么构建nexessary html就足够简单了。也有一些缺陷,但:

  • 如果you're链接到的图片,并使用HREF中,要么让那些绝对链接或使用基href标记在你的头上
  • 我倒是要小心发送HTML附件:垃圾邮件过滤器和病毒扫描程序可能会阻止它们。

祝你好运!

+0

感谢您的及时答复。我会尝试。我也有一个由创新的pdf创作者(尚未尝试过)。我想知道是否可以将pdf保存到服务器,然后作为附件发送。这会起作用吗? – TroyS

+0

你的意思是PDF格式转换器的创新html?我用过那个,它对我很好。 基本上你会采取的HTML(你仍然需要基础的HREF),并将其直接送入PDF生成器。您可能不需要保存到硬盘驱动器:我认为您可以直接保存到(内存)流,然后使用该流作为附件。 –

+0

是的,创新的HTML到PDF转换器是我的。尚未成功使用它。你会碰巧有一个代码片段会雅?那太好了。谢谢。 – TroyS

0
  Winnovative.WnvHtmlConvert.PdfConverter p = new Winnovative.WnvHtmlConvert.PdfConverter(); 

      p.LicenseKey = "NotPostingTHat"; 
      p.PdfDocumentOptions.GenerateSelectablePdf = true; 
      /* 
      ... Setting a bunch of options ... 
      */ 
      p.PdfFooterOptions.DrawFooterLine = false; 

      System.IO.TextWriter writer = new System.IO.StringWriter(); 

      string html = ""; 
      string pdfType = GetPdfType(); 

      switch (pdfType.ToUpper()) 
      { 
       case "THEME": 
        HttpContext.Current.Server.Execute("~/Pdf/Theme.aspx", writer); 
        break; 
       /* More cases */ 
      } 

      html = writer.ToString(); 

      if (html.Length > 0) 
      { 
       byte[] bytes = p.GetPdfBytesFromHtmlString(html); 
       context.Response.ContentType = "application/pdf"; 
       context.Response.OutputStream.Write(bytes, 0, bytes.Length); 
      } 
      else 
      { 
       context.Response.ContentType = "text/plain"; 
       context.Response.Write("No data found!"); 

       foreach (string item in context.Request.Form.AllKeys) 
        context.Response.Write(String.Format("{0}: {1}\n", new object[] { item, context.Request.Form[item] })); 
      } 

没有什么不可以。这是在.ashx中。

Menno

+0

再次感谢您。我肯定会将其纳入我的网络应用程序。 – TroyS

相关问题