views:

120

answers:

1

Hi,

My client wants a page that they can send as an email through IE, but when I do File>Send>Page by Email it adds a hidden input field at the top of the page with some random letters in it.

I've been asked to remove it...

I've tried EnableViewState=false and removing it from the dom with javascript and even hiding it with CSS but it still keeps showing in the email (not on the page in the browser though) :(

I don't know what you may need to help, so i'll paste it all, here be the codings:

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;
            }
        }
    }
}

front end:

<%@ 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"&gt;
<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>

And this is what shows when I View Source on the email:

<!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"&gt;
<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>

Any help would be greatly appreciated.

A: 

I have a similar problem, I am creating an html news letter for my employer and all the internal code (pictures, links...) changes when I send it through Internet Exploder/ Outlook. I'm sure your client (like mine) wants this feature so that they can use their outlook to edit emails and send them to their outlook contacts. There aren't many ways to get around this it seems... only two ways I have found around this so far. You could use a different email client (like Mozilla’s thunderbird) you can copy and paste the source code into the source of an email and send it (though this doesn't really feel like it's a completely professional project when you make someone else copy and paste). Or the other way is that you can create your own emailing service using libraries in other languages. Such as php. When you send things through php nothing changes and you are in control of which email it came from. It takes a bit of tweaking so that the emails don't get discard like spam but I'll post the some code below if you’re interested. If anyone else has a better idea, or a simpler way to of going about this please let me know I would be very please if there was a simpler way. I just can't see it. Sorry I can't help more I haven't worked with very much asp or c# online. You should almost say screw it and leave it as is.

<?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";
?>
Gavin