jQuery / JavaScript替代VB.NET的smtp.Send

时间:2014-01-06 16:31:41

标签: javascript jquery html asp.net html5

我正在尝试将目前用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?我可以使用现有的配置文件吗?

由于

2 个答案:

答案 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页面获取表单数据并实际发送电子邮件。