Comment la fonction" Envoyer une page par courriel " dans Internet Explorer choisit-elle de l'envoyer comme le corps d'un courriel, ou comme pièce jointe?

lorsque vous utilisez la fonction "Envoyer une page par courriel" dans Internet Explorer pour les pages de notre application qui comprennent des rapports Crystal ASP.Net visualiseur, il rédige le courriel dans Outlook avec la page web comme une pièce jointe, plutôt que comme le corps du courriel.

avec une version précédente du framework (v1.1) et Crystal report viewer, ce qui n'était pas le cas. Étant donné que ces versions plus anciennes ne sont plus supportées, j'aimerais savoir s'il y a un moyen pour que je puisse "encourager" "Envoyer une page par email" fonction D'Internet Explorer pour envoyer mon ASP.Net page comme le corps plutôt que comme une pièce jointe?

Pour référence, la source pour le spectateur est tout simplement:

<%@ 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>

Dans le code-behind, nous avons tout simplement:

Dim rpt As New MyReport()
rpt.SetDataSource(ds)
CrystalReportViewer.ReportSource = rpt
CrystalReportViewer.Visible = True
20
demandé sur Rowland Shaw 2011-06-07 18:36:18

2 réponses

ce n'est peut-être pas une réponse directe à votre question, mais je suggère que votre solution ne soit pas trop dépendante d'une fonctionnalité de navigateur qui pourrait ne pas être ou ne pas être prise en charge différemment dans les versions futures de votre navigateur préféré.

si votre application web supporte quelque chose comme une URL permanente pour chaque rendu de rapport spécifique, un courriel avec L'URL comme lien devrait être suffisant.

une autre option serait de rendre votre rapport en PDF (ou XLS) pour obtenir un snapshot qui peut être attaché en toute sécurité à votre courriel.

encore une autre option est de ne pas dépendre du navigateur du client une capacité de courrier électronique mais d'envoyer des e-mails par l'application web elle-même via un serveur SMTP.

voici un exemple de la façon d'envoyer un courriel avec une pièce jointe en VB.NET

Dans le cas où tous les ci-dessus n'est pas une option pour vous, dans certains cas j'ai eu du succès en bougeant IE pour changer son deviner-comment-gérer-page-Contenu le comportement par l'envoi d'un supplémentaire en-tête http (comme défini dans http://www.ietf.org/rfc/rfc2183.txt)

content-disposition: inline contre content-disposition: attachment

Exemple (C#) pour mettre en avant le rapport final rendu

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");
2
répondu oleschri 2011-06-21 12:33:50

il est déterminé par le protocole (fichier ou HTTP) et le contenu de la page web.

les pages Web auxquelles vous accédez en utilisant le protocole "file://" (par exemple, des fichiers sur votre ordinateur local ou réseau local) sont envoyées en pièces jointes avec un .extension htm. Les pages Web auxquelles vous accédez en utilisant le protocole "http://" sont envoyées en pièces jointes avec A.extension txt si le fichier HTML contient un grand commentaire avant la balise.

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

0
répondu Jim 2011-06-16 09:57:26