Как функция "отправить страницу по электронной почте" в 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"> </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
Ответы
Ответ 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