• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 4296
  • Last Modified:

How to introduce the href based mailto link in ASP.NET Code behind(C sharp)

I want to incorporate the the mailto link in ASP.NET csharp code behind.
0
Ammar Iqbal
Asked:
Ammar Iqbal
  • 11
  • 8
1 Solution
 
existenz2Commented:
You can create a HtmlAnchor: http://www.w3schools.com/aspnet/control_htmlanchor.asp

and do the following:
HtmlAnchor anchor = new HtmlAnchor();
anchor.Href = "mailto:me@nospam.net";
Page.Controls.Add(anchor);

Open in new window

0
 
Ammar IqbalAuthor Commented:
instead of writing the email address directly with mailto , can i use a string variable which contains this emails. smae is the case with subject and body.
All these three things are stored in the respective string varaibles, i nedd to use them in a hregf based mailto link.
Can you provide me with the  complete syntax in C sharp
0
 
existenz2Commented:
yes, that's no problem:


string emailAddress = "me@nospam.net";
string subject = "Welcome";
string body = "This is my content";
HtmlAnchor anchor = new HtmlAnchor();
anchor.Href = string.Format("mailto:{0}?subject={1}&body={2}",emailAddress,subject,body);
Page.Controls.Add(anchor);

Open in new window

0
Concerto Cloud for Software Providers & ISVs

Can Concerto Cloud Services help you focus on evolving your application offerings, while delivering the best cloud experience to your customers? From DevOps to revenue models and customer support, the answer is yes!

Learn how Concerto can help you.

 
Ammar IqbalAuthor Commented:
how to add this control "anchor"  as a link in the ASP.NET page
0
 
Ammar IqbalAuthor Commented:
Should I convert this in to a string and then dispaly it on the ASP.NET page, so user is able to click on the mailto link
0
 
Ammar IqbalAuthor Commented:
I am doing this in the catch exception, if for some how , the email could not be sent because of some firewall issues or dns or smtp settings, then i need to give user option option of mailto linkalongwith the email failed message. but by concatenating  " lbEmailStatus.Text = emailfailed + anchor.HRef;". , iam not getting the hyperlink of mailto, instead the tw ostrings are dispalyed


catch (Exception ex)
                   {
                       System.Console.WriteLine(ex.Message);
                       string emailfailed = "The email could not be sent successfully.The credentials of the newly created users are:  user name:'" + userName + "' password:'" + password + "'";
                        HtmlAnchor anchor = new HtmlAnchor();
                        anchor.HRef= string.Format("mailto:{0}?subject={1}&body={2}",toAddress,subject,body);
                        Page.Controls.Add(anchor);
                        lbEmailStatus.Text = emailfailed + anchor.HRef;
                       lbEmailStatus.CssClass = "validate_error";

                   }
0
 
existenz2Commented:
You need to create a LiteralControl instead of a Label and then write the html in it directly.
0
 
Ammar IqbalAuthor Commented:
can you give a example
0
 
Ammar IqbalAuthor Commented:
its not working. same results displaying the whole text instead of showing thel ink for mailto. so that       outlok or anyother email client can pop out
I did like this
ASP.NET page
 <tr>
              <td  align="left" colspan="4">
                  <asp:Label ID="lbEmailStatus" runat="server" EnableViewState="false"> </asp:Label>
              </td>
              <td>
             
                <asp:Literal ID="ltmailto" runat="server" EnableViewState="false"></asp:Literal>
              </td>
             
           </tr>
catch()

{
System.Console.WriteLine(ex.Message);
                       string emailfailed = "The email could not be sent successfully.The credentials of the newly created users are:  user name:'" + userName + "' password:'" + password + "'";
                        HtmlAnchor anchor = new HtmlAnchor();
                        anchor.HRef= string.Format("mailto:{0}?subject={1}&body={2}",toAddress,subject,body);
                        Page.Controls.Add(anchor);
                        lbEmailStatus.Text = emailfailed;
                       lbEmailStatus.CssClass = "validate_error";
                       ltmailto.Text = anchor.HRef;
}
0
 
Ammar IqbalAuthor Commented:
The whole string is being displayed like this. i do not want this,Infact I require to display mailto as a link and as a result outlook or any toher email client opens up
"
  mailto:ammar.iqbal@gmail.com?subject=Approval&body=Welcome to T4DC Web Module!
Your Account has been approved.
Please Login with the following credentials
Username :'vegar00'
Password : 'baf0f52'
Don't forget to change your password after signing in.  
"
0
 
existenz2Commented:
put <a href=" "/> around it and put the mailto: content between the ".
0
 
Ammar IqbalAuthor Commented:
can you give me the exact syntax. i am trying to do it but....
0
 
Ammar IqbalAuthor Commented:
anchor.HRef= string.Format(" <a href=mailto:{0}?subject={1}&body={2},toAddress,subject,body/>");

I am not getting the exact syntax. Can you specify the syntax for me
0
 
existenz2Commented:
You are mixing up code behind and inline code. What are you using?
0
 
Ammar IqbalAuthor Commented:
i am using the code behind code. i neeed to activate the mail to link form the code behind, not to write direct html on the main .aspx page. that is quite simpe. , and is useful when i need to hard codeemail addresses, subject and body.

But  in my case i do not want to hard code toaddresssubject and body.the to address is dynamic address not a hard coded one.i ma not figuring how to incoroporate <a=href ......   with this
anchor.HRef= string.Format(" <a href=mailto:{0}?subject={1}&body={2},toAddress,subject,body/>");

so that mailto link results inan outlook express window popping
0
 
existenz2Commented:
Then putting the code below in your code behind, preferably pageload or something similar, should be enough to render the mail address correctly as a href tag in the html and open Outlook. No extra coding required.
string emailAddress = "me@nospam.net";
string subject = "Welcome";
string body = "This is my content";
HtmlAnchor anchor = new HtmlAnchor();
anchor.Href = string.Format("mailto:{0}?subject={1}&body={2}",emailAddress,subject,body);
Page.Controls.Add(anchor);

Open in new window

0
 
Ammar IqbalAuthor Commented:
but this code displays everything in the for mof string, it does not open the outlook window. i do not wnat to invoke this in a page load event. Infact i am doing this in the catch section of my actual sendmail method. When the user fails to send an email because of unknown resons, then i want to provide an additional functionality to then so that they can get an open outlook window, and try to send tan email again thorugh it. this is my intention. for this purpose, i want to associate this anchoe.Href with some label or litral control whose intiialview state is set to false. and which is invoked only when the control enters to the catch section of the original method send email.
0
 
existenz2Commented:
A stupid me! I forgot an important part :) I forgot to set the "Title" property, else you won't see anything.
string emailAddress = "me@nospam.net";
string subject = "Welcome";
string body = "This is my content";
HtmlAnchor anchor = new HtmlAnchor();
anchor.Href = string.Format("mailto:{0}?subject={1}&body={2}",emailAddress,subject,body);
anchor.Title = "Sent email";
Page.Controls.Add(anchor);

Open in new window

0
 
existenz2Commented:
You can also put the full code in the catch, as long as the PreRender event did not fire yet.
0

Featured Post

Industry Leaders: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

  • 11
  • 8
Tackle projects and never again get stuck behind a technical roadblock.
Join Now