1

首先,我对 asp.net、jquery 和所有 web 端的东西都是全新的。我对其中的任何一个都没有很好的理解。我试图做一些研究,但我无法弄清楚我的问题。

我买了一个模板,现在正试图检查这个损坏的代码以使其正常工作。

我有一个联系表,字段如下所示:

<label class="name">
    <input type="text" value="Name:">
    <span class="error">*This is not a valid name.</span>
        <span class="empty">*This field is required.</span>
    <span class="clear"></span>
</label>

有 3 或 4 个字段都是相同的,除了一个是 textarea。

现在我认为我的问题是,我没有从文本字段中获取值。要么,要么我没有正确发送值。

这是我的提交功能:

submitFu: function () {
    _.validateFu(_.labels)
    if (!_.form.has('.' + _.invalidCl).length)
        $.ajax({
                type: "POST",
                url: _.mailHandlerURL,
                dataType: 'json',
                data: {
                    'name': +_.getValFromLabel($('.name', _.form)),
                    'email': +_.getValFromLabel($('.email', _.form)),
                    'phone':  _.getValFromLabel($('.phone', _.form)),
                    'message': +_.getValFromLabel($('.message', _.form)),
                    'from': 'email@email.net',
                    'smtpMailServer': + _.smtpMailServer,
                    'stripHTML': 'false'
                    },
                success: function () { _.showFu() },
                error: function (data) { alert(data.responseText); }
})

这是我的“getValFromLabel”函数,我真的不明白:

getValFromLabel: function (label) {
        var val = $('input,textarea', label).val()
       , defVal = label.data('defVal')
        return label.length ? val == defVal ? 'nope' : val : 'nope'
}

我戴上alert(+_.getValFromLabel($('.message', _.form)))提交功能,它显示“NaN”,这对我来说毫无意义。这就是为什么我认为我没有正确获得价值。联系表单返回没有发件人地址的错误。

有任何想法吗???

4

2 回答 2

2

这是使用http://bassistance.de/jquery-plugins/jquery-plugin-validation/的基本代码

<form method="post" class="cmxform" id="form" action="form.php">
    <fieldset>
        <legend>Login Form (Enter "foobar" as password)</legend>
        <p>
            <label for="user">Name</label>
            <input id="name" name="name" title="Please enter your name (at least 3 characters)" class="required" minlength="3" />
        </p>
        <p>
            <label for="email">Email</label>
            <input id="email" name="email" title="Please enter a valid email address" class="required email"/>
        </p>
        <p>
            <label for="phone">Phone</label>
            <input id="phone" name="phone" title="Please enter a valid phone number" class="required digits" minlength="10" maxlength="15" />
        </p>
        <p>
            <label for="phone">comment</label>
            <textarea id="comment" name="comment" title="Please enter a comment" class="required" rows="10" cols="50" ></textarea>
        </p>
        <p>
            <input class="submit" type="submit" value="Submit"/>
        </p>
    </fieldset>
</form>

这是 javascript/jquery 代码

jQuery("#form").validate({
    submitHandler: function() {
        $.ajax({
            type: "POST",
            url: "EMAIL.ashx",//or you can code behind web method/webservice
            dataType: 'json',
            data: {
                'name': + $("#name").val(),
                'email': + $("#email").val(),
                'phone':  $("#phone").val(),
                'message': + $("#comment").val(),
                'from': 'email@email.net',
                'smtpMailServer': + $("#smtpserver").val(),
                'stripHTML': 'false'
                },
            success: function () { alert("email sent successfully") },
            error: function (data) { alert(data.responseText); }
        })              
    }
});

您应该将 url 指向您的 ashx 代码,因为您已经在上面发布了代码/示例,我不包括它,也不建议传递 smtp 详细信息,您可以从 web.config 获取 csharp 代码中的详细信息

于 2012-08-06T13:40:10.643 回答
1

如果您对 Web 语言不太熟悉,请尝试使用 ASP .NET 控件和 C# 发送电子邮件。

您的标记将类似于:

<asp:TextBox ID="Name" runat="server"></asp:TextBox>
<asp:Button ID="SendButton" runat="server" Text="Send" />

显然,这只是一个单独的文本框来容纳“名称”值和发送电子邮件的按钮。根据需要添加更多文本框。

然后,在 SendButton_Click 事件中,使用如下代码:

string MailBody;
MailMessage myMessage = new MailMessage();
SmtpClient smtpC = new SmtpClient();

myMessage.Subject = "Subject for Email";
myMessage.From = new MailAddress("youremailhere@provider.com", "Your Name");
myMessage.To.Add(new MailAddress("destinationemail@provider.com", "Receiver Name");

mailBody = Name.Text; //Get information from webpage

smtpC.send(myMessage); //Send the email via smtp

确保将以下引用放在 C# 文件的顶部:

using System.IO;
using System.Net.Mail;

此外,要使用 SMTP 客户端,您必须在 web.config 文件中添加一些配置,如下所示:

<system.net>
  <mailSettings>
    <smtp deliveryMethod="Network" from="youremail@gmail.com">
      <network enableSsl="true" userName="youremail@gmail.com"  password="yourpassword" host="smtp.gmail.com"/>
  </smtp>
</mailSettings>

于 2012-08-06T13:12:40.927 回答