Solved

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

Posted on 2010-09-10
19
1,349 Views
Last Modified: 2012-05-10
I want to incorporate the the mailto link in ASP.NET csharp code behind.
0
Comment
Question by:Ammar Iqbal
  • 11
  • 8
19 Comments
 
LVL 14

Expert Comment

by:existenz2
ID: 33644427
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
 
LVL 1

Author Comment

by:Ammar Iqbal
ID: 33644543
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
 
LVL 14

Expert Comment

by:existenz2
ID: 33644559
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
 
LVL 1

Author Comment

by:Ammar Iqbal
ID: 33644632
how to add this control "anchor"  as a link in the ASP.NET page
0
 
LVL 1

Author Comment

by:Ammar Iqbal
ID: 33644639
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
 
LVL 1

Author Comment

by:Ammar Iqbal
ID: 33644672
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
 
LVL 14

Expert Comment

by:existenz2
ID: 33644691
You need to create a LiteralControl instead of a Label and then write the html in it directly.
0
 
LVL 1

Author Comment

by:Ammar Iqbal
ID: 33644818
can you give a example
0
 
LVL 1

Author Comment

by:Ammar Iqbal
ID: 33644862
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
3 Use Cases for Connected Systems

Our Dev teams are like yours. They’re continually cranking out code for new features/bugs fixes, testing, deploying, testing some more, responding to production monitoring events and more. It’s complex. So, we thought you’d like to see what’s working for us.

 
LVL 1

Author Comment

by:Ammar Iqbal
ID: 33644954
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
 
LVL 14

Expert Comment

by:existenz2
ID: 33644981
put <a href=" "/> around it and put the mailto: content between the ".
0
 
LVL 1

Author Comment

by:Ammar Iqbal
ID: 33644995
can you give me the exact syntax. i am trying to do it but....
0
 
LVL 1

Author Comment

by:Ammar Iqbal
ID: 33645030
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
 
LVL 14

Expert Comment

by:existenz2
ID: 33645076
You are mixing up code behind and inline code. What are you using?
0
 
LVL 1

Author Comment

by:Ammar Iqbal
ID: 33645118
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
 
LVL 14

Expert Comment

by:existenz2
ID: 33645141
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
 
LVL 1

Author Comment

by:Ammar Iqbal
ID: 33645172
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
 
LVL 14

Accepted Solution

by:
existenz2 earned 500 total points
ID: 33645191
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
 
LVL 14

Expert Comment

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

Featured Post

Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Just a quick little trick I learned recently.  Now that I'm using jQuery with abandon in my asp.net applications, I have grown tired of the following syntax:      (CODE) I suppose it just offends my sense of decency to put inline VBScript on a…
Performance in games development is paramount: every microsecond counts to be able to do everything in less than 33ms (aiming at 16ms). C# foreach statement is one of the worst performance killers, and here I explain why.
This is used to tweak the memory usage for your computer, it is used for servers more so than workstations but just be careful editing registry settings as it may cause irreversible results. I hold no responsibility for anything you do to the regist…
Many functions in Excel can make decisions. The most simple of these is the IF function: it returns a value depending on whether a condition you describe is true or false. Once you get the hang of using the IF function, you will find it easier to us…

895 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

15 Experts available now in Live!

Get 1:1 Help Now