I have a page (somePage.aspx
) and I need the content that has been generated as an Email body
<div id="DV_TimeReportWraper" runat="server" style="display:block">
<table id="TBL_UsersinTblTime">
<tr id="TR_UsersinTblTime">
<td id="TD_H_Name" class="Dg">
name
</td>
<td id="TD_H_UserID" class="Dg">
ID
</td>
<td id="TD_H_Status" class="Dg">
initial Stage
</td>
<td id="TD_H_SignOutAutoExeState" class="Dg">
current Stage
</td>
</tr>
<%
if(edata != null)
for (int idx=0;idx<edata.Count;idx++) {
var row = edata[idx];
bool bgcl = (idx % 2) == 0;
string BgCol = "";
if (bgcl)
BgCol = "#70878F";
else
BgCol = "#E6E6B8";
%>
<tr style=" background-color:<%=BgCol%>">
<td id="TD_Name">
<% = row["name"] %>
</td>
<td id="TD_UserID">
<%= row["UserId"]%>
</td>
<td id="TD_Status">
<%
int uidForSrc = Convert.ToInt32(row["UserId"]);
string src = "images/SignedOutNoFrame.png";
if (UserDidnotSignOutTimeOut(uidForSrc))
src = "images/didnotSignOut.png";
%>
<input type="image" src="<% =src %>" style="width:25px" />
</td>
<td id="TD_SignOutAutoExeState" >
<%
string EexcSrc = "";
string inputType ="hidden";
//this updates if needed then returns true= needed update false = isn't need
if (UpdatedTimeOutOKForUSER(uidForSrc))
{
inputType = "image";
excSrc = "/images/SignedOutNoFrame.png";
}
%>
<input type="<%=inputType %>" src="<%=EexcSrc %>" style="width:25px" />
</td>
</tr>
<%
if (idx == edata.Count - 1)
sendLog();
}
%>
</table>
</div>
code for sendLog()
public void sendLog()
{
mail.aReciver="[email protected]";
mail.bSubject="ttest";
mail.cBody = DV_UsersInTblTime.InnerHtml;
mail.HentalSend();
}
I can't get the value of content to assign mail.cBody
with.
It's saying something about the value not being a literal etc'.
That is the method I'm using in an external class which works fine till this last attempt to add the functionality of page content as a body, how is it possible to achieve the result as needed here?
public static class mail
{
public static string aReciver, bSubject, cBody;
public static void HentalSend()
{
string SmtpServer = "smtp.gmail.com";
int port = 587;
string sender = "[email protected]";
string ReCiver = aReciver;
string Subject = bSubject;
string Body = cBody;
string account = "[email protected]";
string Pass = "123456";
Send(SmtpServer, port, account, Pass, sender, Receiver, Subject, Body);
... //send() is another relevant method to this question, it does rest of mail settings
}
}
Re: Send email with Tabular data in Email body Simplest way is to send an HTML Email (Body Type = text/html) and put a HTML <TABLE> in Body of Email. Regards.
This code will get the generated HTML of your dynamic control in to a string variable.
StringBuilder stringBuilder = new StringBuilder();
StringWriter writer = new StringWriter(stringBuilder);
HtmlTextWriter htmlWriter = new HtmlTextWriter(writer);
try {
DV_TimeReportWraper.RenderControl(htmlWriter);
} catch (HttpException generatedExceptionName) {
}
string DV_TimeReportWraper_innerHTML = stringBuilder.ToString();
Then just use DV_TimeReportWraper_innerHTML
as the body of your email
You might have to create a loop in case this control has children controls. More on that here: http://msdn.microsoft.com/en-us/library/htwek607.aspx#Y472
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With