How can I send form results in an email using asp.net?

I produce a results page for my users after they complete a .net wizard.  What is the best way to have the results page emailed to them?

devnewbeeAsked:
Who is Participating?

Improve company productivity with a Business Account.Sign Up

x
 
williamcampbellConnect With a Mentor Commented:
Try doing it in the section outlined
 
            private void Page_Load(object sender, System.EventArgs e)
            {
                  if(IsPostBack)
                  {
                        OnPostBackLoad(e); <-- after the email button is pressed you will end up here
                  }
                  else
                  {
                        OnFirstLoad(e);
                  }
            }

Open in new window

0
 
williamcampbellCommented:
Do you want to use a button or capture the Post Stream?

Here is button Code below
// Form
<Form id="form1" runat="server">
Email: <asp:TextBox id="txtEmail" runat="server" />
<asp:Button id="btnEmail" Text="Email Form" onclick="doEmail()" runat="server" />
</Form>
 
<%@ Import Namespace="System.Web.Mail" %> //Use Mail API 
 
// Do email 
private function void doEmail(Source as Object, E as EventArgs)
{
	MailMessage objEmail =  New MailMessage ()
	objEmail.To=txtEmail.text;
	objEmail.BCC="wc@ee.com";
	objEmail.FROM="me@here.com";
 
	objEmail.SUBJECT="I spammed you";
	objEmail.BODY="body of message";
	objEmail.BodyFormat = MailFormat.Text;
	SmtpMail.SmtpServer ="mail.Wherever.com";
	SmtpMail.Send(objEmail);
}

Open in new window

0
 
svellutoCommented:
You could use System.Net.Mail

Here's a good website:

http://www.systemnetmail.com/

and I've attached a quick snippet of code I tend to use more often.

Hope that Helps!

Steve
MailMessage mail = new MailMessage();
 
//From E-mail Address
mail.From = new MailAddress("from@yourdomain.com");
 
//To E-mail Address
mail.To.Add(new MailAddress("to@userdomain.com"));
 
//Subject of E-mail
mail.Subject = "Subject Line";
 
//E-mail Message
mail.Body = "Message Body";
 
//Now the fun part...
 
try
{
//if you are using an Internal Mail Server
//you can use this:
SmtpClient smtp = new SmtpClient("internal.mailserver.com");
smtp.DeliveryMethod = SmtpDeliveryMethod.Network;
 
//Or if you're using an external mail server
//You can use this:
SmtpClient smtp = new SmtpClient();
smtp.Host = "external.mailserver.com";
smtp.Port = 587;
 
 
//If you are not using default Credentials:
System.Net.NetworkCredential SmtpUserInfo = new System.Net.NetworkCredential("username", "password");
 
smtp.UseDefaultCredentials = false;
smtp.Credentials = SmtpUserInfo;
 
//SSL
smtp.EnableSsl = true;
 
//The most important line of all... Sending the e-mail!
smtp.Send(mail);
}
catch (Exception ex)
{
 
}

Open in new window

0
What Kind of Coding Program is Right for You?

There are many ways to learn to code these days. From coding bootcamps like Flatiron School to online courses to totally free beginner resources. The best way to learn to code depends on many factors, but the most important one is you. See what course is best for you.

 
devnewbeeAuthor Commented:
Awesome guys.  The only question i have is how do I save the .aspx page as text in the body tag of your code and use an address the user enters?  Do I call a textbox in the "TO" section?
0
 
devnewbeeAuthor Commented:
I would like ...objEmail.BODY="body of message" to equal the rendered .aspx page to be save in text.
0
 
devnewbeeAuthor Commented:
I figured out the TO problem.  No all I have left is to assign the rendered results to the body of the message.  How is this best done?
0
 
svellutoCommented:
Where are the rendered results coming from?

Is this something you have coded?
0
 
devnewbeeAuthor Commented:
They are just some static and dynamically generated tables that show on the page.  is there a way of just sending what is visible in an email to the user?  
0
 
devnewbeeAuthor Commented:
if I save in a text format it works.  How can I do this prior to sending the email and call for txt file to send as an attachement or just send embedded?
0
 
williamcampbellCommented:
You will have to intercept the rendering stream and save it to a text file.

Attached a snippet you can play with
private void Page_Load(object sender, System.EventArgs e)
{
System.IO.StringWriter oStringWriter = new System.IO.StringWriter();
System.Web.UI.HtmlTextWriter oHtmlTextWriter = new
System.Web.UI.HtmlTextWriter(oStringWriter);
Page.RenderControl(oHtmlTextWriter);
oHtmlTextWriter.Flush();
System.IO.FileStream fs = new
System.IO.FileStream(@"C:\temp\test.htm",System.IO .FileMode.Create);
string s= oStringWriter.ToString();
byte[] b = System.Text.Encoding.UTF8.GetBytes(s);
fs.Write(b,0,b.Length);
fs.Close();
Response.End();
}

Open in new window

0
 
devnewbeeAuthor Commented:
This is great.  The only concern I have is that is the final step of my wizard that the results happen on.  iIsee the above code is initiated on page_load.  is there another placa I should call the above code instead?
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.