2009-12-17 103 views
1

我的客户想要的网页,他们可以通过IE浏览器的邮件发送,但是当我做文件>通过电子邮件发送>页它在网页的顶部,一些随机增加了一个隐藏的输入字段字母在里面。发送网页

我被要求将其删除...

我试过的EnableViewState = false,并从支持JavaScript的DOM移除它,甚至用CSS隐藏它,但它仍不断显示在电子邮件(不在浏览器页面上虽然):(

我不知道你需要什么帮助,所以我贴了这一切,在这里是值编码:

CS:

using System; 
using System.Collections.Generic; 
using System.Web; 
using System.Web.UI; 
using System.Web.UI.WebControls; 
using WorksUnit.Clydesdale.PropertyManager; 
using WorksUnit.Clydesdale.PropertyManager.BusinessObjects; 

namespace WorksUnit.Clydesdale.PropertyManager.Website.Summary 
{ 
    public partial class MaintenanceJobSheet : System.Web.UI.Page 
    { 
     private int _cachedPropertyId = 0; 
     private const string PROPERTYID_QUERY_STRING = "PropertyID"; 
     private int _propertyId 
     { 
      get 
      { 
       if (_cachedPropertyId == 0 && Request.QueryString[PROPERTYID_QUERY_STRING] != null) 
       { 
        int.TryParse(Request.QueryString[PROPERTYID_QUERY_STRING].ToString(), out _cachedPropertyId); 
       } 

       return _cachedPropertyId; 
      } 
      set { _cachedPropertyId = value; } 
     } 
     private int maintenanceId 
     { 
      get 
      { 
       if (!string.IsNullOrEmpty(Request.QueryString["maintenanceId"])) 
       { 
        return Convert.ToInt32(Request.QueryString["maintenanceId"]); 
       } 
       else 
       { 
        return 0; 
       } 
      } 
     } 
     protected void Page_Load(object sender, EventArgs e) 
     { 
      if (maintenanceId != 0) 
      { 
       BusinessObjects.Maintenance maintenance = BusinessObjects.Maintenance.Retrieve(maintenanceId); 
       LiteralJobNumber.Text = maintenance.JobNumber; 
       LiteralDescription.Text = maintenance.Description; 
       LiteralContractor.Text = maintenance.Contractor.Description; 
       if(maintenance.Date!=DateTime.MinValue) 
       { 
        LiteralDate.Text = maintenance.Date.ToShortDateString(); 
       } 
       if(maintenance.CompletionDate!=DateTime.MinValue) 
       { 
        LiteralCompletionDate.Text = maintenance.CompletionDate.ToShortDateString(); 
       } 
       if(maintenance.DateInvoiced!=DateTime.MinValue) 
       { 
        LiteralInvoicedDate.Text = maintenance.DateInvoiced.ToShortDateString(); 
       } 
       if(maintenance.DatePaid!=DateTime.MinValue) 
       { 
        LiteralDatePaid.Text =maintenance.DatePaid.ToShortDateString(); 
       } 
       LiteralChargeDetails.Text = maintenance.DetailsOfCharging; 
       LiteralUpdate.Text = maintenance.LatestSummary; 
      } 
     } 
    } 
} 

前端:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="MaintenanceJobSheet.aspx.cs" EnableViewState="false" Inherits="WorksUnit.Clydesdale.PropertyManager.Website.Summary.MaintenanceJobSheet" %> 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" > 
<head runat="server"> 
    <title>Clydesdale Property Solutions Work Request</title> 
    <link rel="stylesheet" type="text/css" media="screen" href="/css/screen.css" /> 
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js" type="text/javascript"></script> 
</head> 
<body> 
    <form id="form1" runat="server"> 
    <div> 
     <span><b>Contractor:</b>&nbsp;&nbsp;</span><asp:Literal ID="LiteralContractor" runat="server" /> 
     <br /><br /> 
     <span>Please undertake the following:-</span> 
     <br /><br /> 
     <table width="600" cellpadding="3" cellspacing="0" border="1px"> 
     <tr> 
      <td valign="top" width="150">Job Number:</td>    
      <td><asp:Literal ID="LiteralJobNumber" runat="server" Text="N/A" /></td> 
     </tr> 
     <tr> 
      <td valign="top" width="150">Description:</td>    
      <td><asp:Literal ID="LiteralDescription" runat="server" /></td> 
     </tr> 
     <tr> 
      <td valign="top" width="150">Date:</td>    
      <td><asp:Literal ID="LiteralDate" runat="server" /></td> 
     </tr> 
     <tr> 
      <td valign="top" width="150">Completion Date:</td> 
      <td><asp:Literal ID="LiteralCompletionDate" runat="server" /></td> 
     </tr>   
     <tr> 
      <td valign="top" width="150">Invoiced Date:</td> 
      <td><asp:Literal ID="LiteralInvoicedDate" runat="server" /></td> 
     </tr> 
     <tr> 
      <td valign="top" width="150">Date Paid:</td> 
      <td><asp:Literal ID="LiteralDatePaid" runat="server" /></td> 
     </tr> 
     <tr> 
      <td valign="top" width="150">Details of Charging:</td> 
      <td><asp:Literal ID="LiteralChargeDetails" runat="server" /></td> 
     </tr> 
     <tr> 
      <td valign="top" width="150">Update:</td> 
      <td><asp:Literal ID="LiteralUpdate" runat="server" /></td> 
     </tr> 
     </table> 
     <br /><br /><br /> 
     <span>Thank You</span> 
     <br /><br /><br /> 
     Clydesdale Estates,<br /> 
     Tel:02380331234 <br /> 
     Fax:02380335522<br /> 
     Email: [email protected] 
    </div> 
    </form> 
</body> 
</html> 

而这正是显示了当我查看源上的电子邮件:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> 
<HTML> 
<HEAD> 
<TITLE>Clydesdale Property Solutions Work Request</TITLE> 
<META content="text/html; charset=iso-8859-1" http-equiv=Content-Type> 
<BASE href="http://localhost:4659/Summary/MaintenanceJobSheet.aspx"> 
<LINK rel=stylesheet type=text/css href="/css/screen.css" media=screen> 
<META name=GENERATOR content="MSHTML 8.00.6001.18854"> 
</HEAD> 
<BODY> 
<FORM id=form1 method=post name=form1 action=MaintenanceJobSheet.aspx> 
<!-- random input appears here (wrapped in a div) --><DIV> 
<INPUT id=__VIEWSTATE 
value=/wEPDwUJNzAyODg3NjY4ZGT+zJss/Xlbkhlxv8we8oRPUGNy9Q== type=hidden name=__VIEWSTATE> 
</DIV> <!-- and ends here --> 
<DIV><SPAN><B>Contractor:</B>&nbsp;&nbsp;</SPAN> <BR><BR><SPAN>Please undertake the following:-</SPAN> <BR><BR> 
<TABLE border=1 cellSpacing=0 cellPadding=3 width=600> 
<TD vAlign=top width=150><!-- more content goes here --></TD> 
</TR> 
</TABLE> 
</DIV> 
</FORM> 
</BODY> 
</HTML> 

任何帮助将不胜感激。

回答

0

我有一个类似的问题,我创造了我的雇主的HTML新闻信和所有的内部代码(图片,链接......)的变化,当我通过互联网发爆器/ Outlook发送它。

我敢肯定,你的客户(像我)希望此功能,以便他们可以使用Outlook来编辑电子邮件,并将它们发送到他们的Outlook联系人。似乎没有太多方法可以解决这个问题。

只有两个方法,我围绕着这一迄今发现的。

  1. 您可以使用不同的电子邮件客户端(如Mozilla的Thunderbird)。您可以将源代码复制并粘贴到电子邮件的源代码中并发送(但当您让其他人复制并粘贴时,它并不真的觉得它是一个完全专业的项目)。

  2. 或者另一种方式是,你可以在其他语言中使用的库创建您自己的电子邮件收发服务。比如PHP。

    当你通过PHP没有什么变化送的东西,你在其中电子邮件的它是从哪里来的控制。这需要一些调整,这样的电子邮件不会被丢弃垃圾邮件,但是我已经张贴下面如果大家感兴趣的一些代码。

如果任何人有一个更好的主意,或者更简单的方式去了解这个请让我的知道我会,如果有一个更简单的方法很高兴。
你应该几乎可以说其拧紧,并保留原样。

<?php 
//file_get_contents('./newsletter.html', true); // or use a file for the body 
//$body = file_get_contents('../newsletter/2010/1/newsletter.html', true); 
//define the receiver of the email 
$to = '[email protected]'; 
//define the subject of the email 
$subject = 'Test HTML email'; 
//create a boundary string. It must be unique 
//so we use the MD5 algorithm to generate a random hash 
$random_hash = md5(date('r', time())); 
//define the headers we want passed. Note that they are separated with \r\n 
$headers = "From: [email protected]\r\nReply-To: [email protected]"; 
//add boundary string and mime type specification 
$headers .= "\r\nContent-Type: multipart/alternative; boundary=\"PHP-alt-".$random_hash."\""; 
//define the body of the message. 
ob_start(); //Turn on output buffering 
?> 
--PHP-alt-<?php echo $random_hash; ?> 
Content-Type: text/plain; charset="iso-8859-1" 
Content-Transfer-Encoding: 7bit 

Hello World!!! 
This is simple text email message. 

--PHP-alt-<?php echo $random_hash; ?> 
Content-Type: text/html; charset="iso-8859-1" 
Content-Transfer-Encoding: 7bit 

<h2>Hello World!</h2> 
<p>This is something with <b>HTML</b> formatting.</p> 
<img src="http://****/test.png" width="600" height="123" alt="test pic for html email"> 

--PHP-alt-<?php echo $random_hash; ?>-- 
<? 
//copy current buffer contents into $message variable and delete current output buffer 
$message = ob_get_clean(); 
//send the email 
$mail_sent = @mail($to, $subject, $message, $headers); 
//if the message is sent successfully print "Mail sent". Otherwise print "Mail failed" 
echo $mail_sent ? "Mail sent" : "Mail failed"; 
?>