Подтвердить что ты не робот

Как функция "отправить страницу по электронной почте" в Internet Explorer позволяет отправлять как тело письма, так и в виде вложения?

При использовании функции "Отправить страницу по электронной почте" в Internet Explorer для страниц нашего приложения, которые включают средство просмотра отчетов Crystal Reports ASP.Net, он создает письмо в 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
4b9b3361

Ответ 1

Это не может быть прямым ответом на ваш вопрос, но Я предлагаю сделать ваше решение не слишком зависимым от функции браузера, которая не может быть или по-разному поддерживается в будущих версиях вашего предпочтительного браузера.

Если ваше веб-приложение поддерживает что-то вроде постоянного URL-адреса для каждого конкретного рендеринга отчета, должно быть достаточно электронной почты с URL-адресом в качестве ссылки.

Другой вариант - предоставить отчет в формате PDF (или XLS), чтобы получить моментальный снимок, который можно безопасно привязать к вашей электронной почте.

Еще один вариант заключается в том, чтобы не зависеть от клиентского браузера от возможностей электронной почты, а отправлять электронную почту самим веб-приложением через SMTP-сервер.

Вот пример того, как отправить электронное письмо с вложением в VB.NET

В случае, если все вышесказанное не является для вас вариантом, в некоторых случаях у меня был IE с успехом, чтобы изменить его поведение догадывания-до-страницы-страницы, отправив дополнительный http header (как определено в http://www.ietf.org/rfc/rfc2183.txt)

content-disposition: inline против content-disposition: attachment

Пример (С#) для представления перед окончательным отрисовкой отчета

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

Определяется протоколом (файл или HTTP) и содержимым веб-страницы.

Веб-страницы, к которым вы обращаетесь, используя протокол "file://" (например, файлы на вашем локальном компьютере или в локальной сети), отправляются в виде вложений с расширением .htm. Веб-страницы, которые вы получаете с помощью протокола http://, отправляются в виде вложений с расширением .txt, если в HTML файле содержится большой комментарий перед тегом.

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