我正在尝试将目前用VB.Net编写的我的Web应用程序的“联系我们”部分重写为使用jQuery / JavaScript。
目前,它包含的是电子邮件主题和正文.. mailTo地址在我的VB.Net .CS文件和web.config中定义:
VB.Net .CS文件:
Dim FromPersonName As String = FromName.Text
Dim FromPersonEmail As String = FromEmail.Text
Dim ToAddress As String = "sales@myDomain.co.uk"
Dim mm As New MailMessage(FromEmail.Text, ToAddress)
mm.Subject = Subject.Text
mm.IsBodyHtml = False
Dim smtp As New SmtpClient
smtp.Send(mm)
WebConfig:
<system.net>
<mailSettings>
<smtp>
<network host="mail.myDomain.co.uk" port="25" userName="xxxx" password="xxxx" />
</smtp>
我如何将上述转换为使用html / jquery javascript?我可以使用现有的配置文件吗?
由于
答案 0 :(得分:1)
您将无法通过javascript直接发送。
你需要做的是让javascript向你的asp网络服务器发一个ajax post请求。如果您使用webforms执行vb.bet,您将创建一个接受POST数据的新页面,然后继续发送电子邮件。
理想的流程是
用户点击发送至联系我们页面 - &gt; Javascript停止整页发布,并异步POST数据到服务器页面 - &gt;服务器页面发送邮件。
答案 1 :(得分:1)
好的,这是一个非常基本的例子,但希望能给出足够的想法,指出你正确的方向。
这是您的联系我们页面上的表单的模型。注意id是form1
<form id="form1" runat="server">
<div>
<asp:TextBox ID="name" runat="server"></asp:TextBox>
name<br />
<br />
<asp:TextBox ID="email" runat="server"></asp:TextBox>
email<br />
<br />
<asp:TextBox ID="message" runat="server"></asp:TextBox>
message<br />
<br />
<asp:Button ID="Button1" runat="server" Text="Button" />
</div>
</form>
在同一页面上,我编写了以下一些javascript来捕获表单提交事件,并通过ajax而不是整页回发发送数据。我使用了jquery 1.9.1
<script type="text/javascript">
$(document).ready(function () {
$("#form1").submit(function (e) {
console.log("hello");
e.preventDefault();
var formData = $("#form1").serialize();
$.ajax({
type:"POST",
data: formData,
url: "SendMail.ashx"
}).done(function() {
alert("Message sent!");
});
});
});
</script>
现在,您需要在解决方案中添加另一个项目,即通用事件处理程序。这就是javascript正在发布的内容,以及实际发送电子邮件的内容。以下是我的例子
Imports System.Web
Imports System.Web.Services
Public Class SendMail
Implements System.Web.IHttpHandler
Sub ProcessRequest(ByVal context As HttpContext) Implements IHttpHandler.ProcessRequest
'get post data from AJAX call
Dim name As String = context.Request("name")
Dim email As String = context.Request("email")
Dim message As String = context.Request("message")
'here you would put your email code
End Sub
ReadOnly Property IsReusable() As Boolean Implements IHttpHandler.IsReusable
Get
Return False
End Get
End Property
End Class
因此,这里的流程是用户加载联系页面并填写表格 - &gt;点击提交按钮 - &gt; javascript捕获并阻止整页回发并异步将表单数据发布到事件处理程序 - &gt; sendmail.ashx页面获取表单数据并实际发送电子邮件。