Internet Explorer中的“通过电子邮件发送页面”功能如何选择作为电子邮件正文或附件发送?

时间:2011-06-07 14:36:19

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

当我们的应用程序中包含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

2 个答案:

答案 0 :(得分:2)

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

如果您的网络应用程序支持每个特定报告呈现的永久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");

答案 1 :(得分:0)

由protocal(文件或HTTP)和网页内容决定。

  

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

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