I have the web service:
[WebMethod]
public void SendMail(string _name, string _email, string _message)
{
//Create Mail Message Object with content that you want to send with mail.
MailMessage MyMailMessage = new MailMessage("[email protected]", "[email protected]", "This is the mail subject", "Just wanted to say Hello");
MyMailMessage.IsBodyHtml = false;
//Proper Authentication Details need to be passed when sending email from gmail
NetworkCredential mailAuthentication = new NetworkCredential("[email protected]", "xxxxxxxxx");
//Smtp Mail server of Gmail is "smpt.gmail" and it uses port no. 587
//For different server like yahoo this details changes and you can
//get it from respective server.
SmtpClient mailClient = new SmtpClient("smtp.gmail", 587);
//Enable SSL
mailClient.EnableSsl = true;
mailClient.UseDefaultCredentials = false;
mailClient.Credentials = mailAuthentication;
mailClient.Send(MyMailMessage);
}
and i have a html page. How can i call this function from my html page? (This function must send the message to email)
I have the web service:
[WebMethod]
public void SendMail(string _name, string _email, string _message)
{
//Create Mail Message Object with content that you want to send with mail.
MailMessage MyMailMessage = new MailMessage("[email protected]", "[email protected]", "This is the mail subject", "Just wanted to say Hello");
MyMailMessage.IsBodyHtml = false;
//Proper Authentication Details need to be passed when sending email from gmail
NetworkCredential mailAuthentication = new NetworkCredential("[email protected]", "xxxxxxxxx");
//Smtp Mail server of Gmail is "smpt.gmail." and it uses port no. 587
//For different server like yahoo this details changes and you can
//get it from respective server.
SmtpClient mailClient = new SmtpClient("smtp.gmail.", 587);
//Enable SSL
mailClient.EnableSsl = true;
mailClient.UseDefaultCredentials = false;
mailClient.Credentials = mailAuthentication;
mailClient.Send(MyMailMessage);
}
and i have a html page. How can i call this function from my html page? (This function must send the message to email)
Share Improve this question edited Nov 25, 2013 at 7:27 Christian Strempfer 7,3836 gold badges53 silver badges76 bronze badges asked Sep 1, 2011 at 12:49 GlebkaGlebka 1,6784 gold badges24 silver badges41 bronze badges 3- possible duplicate of $.ajax and webmethod/pagemethods – Grant Thomas Commented Sep 1, 2011 at 12:52
- Are you willing to add the jQuery library? – Mark Schultheiss Commented Sep 1, 2011 at 12:54
- 1 @Mr. Disappointment - I don't see this as a duplicate of THAT page. – Mark Schultheiss Commented Sep 1, 2011 at 12:55
5 Answers
Reset to default 5Use jQuery library. It makes ajax calls piece a cake. Then follow these items:
- Add an HTML button to your page, so that people can start the ajax process by clicking it
- Use jQuery to hook into the click event of that button (or span, or a div, or anything else)
- Make sure you have
ScriptService
attribute on your web service (this attribute means that you can call your service from JavaScript) Send items to your web service method
$('#buttonId').click(function(){ // Validating input $.ajax({ type: 'POST', url: '/your-web-service-path.asmx/your-method-name', data: {} dataType: 'json', contentType: 'application/json; charset=utf-8', success: function(r){}, error: function(e){} }); });
Just note that you have to make a JSON object out of your parameters and the name of the JSON properties should match the name of the web service parameters. Also note that the return value of the web service would be available to you as r.d
object passed to success callback of ajax call.
If it's an aspx page, you can add a ScriptManager with EnablePageMethods="true"attribute, and then call PageMethods.sendMail(name, email, message, onSuccess, onFail);
Maybe you want to take a look at jQuery's ajax capabilities.
You need to do something very important: Add the ScriptService attribute the class so that it can be called from a Javascript as in this example:
[ScriptService]
public class SimpleWebService : System.Web.Services.WebService
{
// ...
}
http://msdn.microsoft./en-us/library/system.web.script.services.scriptserviceattribute.aspx
You have to pass the three parameters from the cs code page, by calling like this way,
service.SendMail(name, email, message);