【问题标题】:How does the "send page by email" feature in Internet Explorer choose to send as the body of an email, or as an attachment?Internet Explorer 中的“通过电子邮件发送页面”功能如何选择作为电子邮件正文或附件发送?
【发布时间】:2011-09-10 03:32:12
【问题描述】:

当对我们应用程序中包含 Crystal Reports ASP.Net 查看器的页面使用 Internet Explorer 中的“通过电子邮件发送页面”功能时,它会在 Outlook 中草拟电子邮件,并将网页作为附件,而不是作为正文的电子邮件。

对于以前版本的框架 (v1.1) 和关联的 Crystal 报表查看器,情况并非如此。鉴于现在不支持这些旧版本,我想知道是否有任何方法可以“鼓励”Internet Explorer 的“通过电子邮件发送页面”功能将我的 ASP.Net 页面作为正文而不是附件发送?

供参考,查看者的来源很简单:

<%@ Page Language="vb" AutoEventWireup="false" Codebehind="GeneralReport.aspx.vb" Inherits="MyApplication.GeneralReportForm"%>
<%@ Register TagPrefix="cr" Namespace="CrystalDecisions.Web" Assembly="CrystalDecisions.Web, Version=10.5.3700.0, Culture=neutral, PublicKeyToken=692fbea5521e1304" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
    <HEAD>
        <title></title>
        <meta content="Microsoft Visual Studio.NET 7.0" name="GENERATOR">
        <meta content="Visual Basic 7.0" name="CODE_LANGUAGE">
        <meta content="JavaScript" name="vs_defaultClientScript">
        <meta content="http://schemas.microsoft.com/intellisense/ie5" name="vs_targetSchema">
        <LINK href="Styles.css" type="text/css" rel="stylesheet">
    </HEAD>
    <body>
        <form id="Form1" method="post" runat="server">
            <div id="contentstart">&nbsp;</div>
            <DIV><CR:CRYSTALREPORTVIEWER id="CrystalReportViewer" runat="server" DisplayToolbar="False" SeparatePages="False"
                    HasDrillUpButton="False" EnableDrillDown="False" DisplayGroupTree="False" HasSearchButton="False" HasZoomFactorList="False"
                    HasGotoPageButton="False" Visible="False" Height="50px" Width="350px"></CR:CRYSTALREPORTVIEWER>
            </DIV>
            <br>
            <asp:label id="lblError" runat="server" Width="743px" Font-Size="Larger" ForeColor="Red"></asp:label>
        </form>
    </body>
</HTML>

在后面的代码中,我们只需要:

Dim rpt As New MyReport()
rpt.SetDataSource(ds)
CrystalReportViewer.ReportSource = rpt
CrystalReportViewer.Visible = True

【问题讨论】:

  • 您能否发布(部分)由旧调用和新调用生成的 HTML?或者更好的是,带有完整标头的 HTTP 日志(提琴手)?我们或许能够发现显着差异,为可能的解决方案开辟道路。例如,已知原因是 打开标记之前的 text/cmets。
  • 通话保持不变。不幸的是,这只是在升级后才被发现;最终,我对影响决策的因素以及如何影响决策更感兴趣。
  • 理论上是输出的 HTML 和/或 HTTP 标头强制该决定。无论新旧,我指的是“旧框架下调用的输出”和“新框架下调用的输出”。

标签: asp.net internet-explorer outlook crystal-reports-2008


【解决方案1】:

它由协议(文件或 HTTP)和网页内容决定。

您使用“file://”协议访问的网页(例如,本地计算机或局域网上的文件)将作为扩展名为 .htm 的附件发送。如果 HTML 文件在标记前包含大注释,则使用“http://”协议访问的网页将作为带有 .txt 扩展名的附件发送。

http://support.microsoft.com/kb/304694

【讨论】:

  • 在我的情况下,他们没有使用 file:// 协议,也没有在打开 &lt;html&gt; 标签之前的网页中的任何评论(它们被附加为 .htm 文件,这表明该条件未达到)
  • 如果你没有解释你的问题的具体情况,你真的不应该期望人们回答你所面临问题的具体情况。如果反对票来自您或出于这个原因,*耸耸肩。
  • 好吧,这个问题确实包括我感兴趣的 ASP.Net 页面的来源,尽管如果有一个涵盖通用案例的答案,那对其他人也很有用。当然,我不能代表所有投票支持你答案的人。
【解决方案2】:

这可能不是您问题的直接答案,但 我建议您的解决方案不要过于依赖于您的首选浏览器的未来版本可能不支持或不同支持的浏览器功能。

如果您的 Web 应用程序支持用于每个特定报告呈现的永久 URL,那么带有 URL 作为链接的电子邮件就足够了。

另一种选择是将您的报告呈现为 PDF(或 XLS),以获得可以安全地附加到您的电子邮件的快照。

还有一个选择是不依赖于客户端浏览器的电子邮件功能,而是通过 Web 应用程序本身通过 SMTP 服务器发送电子邮件。

Here is an example of how to send an email with an attachment in VB.NET

如果您无法选择以上所有方法,在某些情况下,我成功地让 IE 通过发送额外的消息来更改其猜测如何处理页面内容的行为http头(定义在http://www.ietf.org/rfc/rfc2183.txt

content-disposition: inlinecontent-disposition: attachment

在最终报告呈现之前放置的示例 (C#)

HttpContext.Current.Response.ClearContent();
HttpContext.Current.Response.ClearHeaders();
HttpContext.Current.Response.Buffer = true;
HttpContext.Current.Response.ContentType = "text/html";
HttpContext.Current.Response.AddHeader("content-disposition", "inline; filename=report.htm");

【讨论】:

  • 电子邮件的收件人看不到(内部)网络应用程序,因此链接已失效;电子邮件的收件人报告说他无法阅读附件,这就是为什么我要阻止 IE 将网页作为 .htm 文件附加,而是将其作为实际电子邮件内联(就像它对这么多网页所做的那样)跨度>
  • @Rowland - 你不能在你的网络应用程序中创建电子邮件?然后,您可以完全控制生成的 HTML 电子邮件。我知道这可能是应用程序的全新功能。
  • @Rowland - 刚刚发现一条评论提到,如果 Outlook 配置为默认以纯文本形式发送邮件 - 当然 - IE 必须将网页作为附件发送,将 Word 设置为电子邮件编辑器
  • 赞成投票反对者的不良 SO 礼仪。为什么这不是一个好的答案?
  • @RowlandShaw 我是否理解正确,如果您问某人是否有更好的橙子可以将钉子钉入墙上,并且有人建议使用锤子,这是不好的建议,因为它不是一种橙色? *g*
猜你喜欢
  • 2020-05-07
  • 2012-02-04
  • 2012-11-17
  • 2023-03-10
  • 2017-01-16
  • 1970-01-01
  • 1970-01-01
  • 2020-03-26
  • 2018-11-15
相关资源
最近更新 更多