1

我正在尝试将 Mailgun 的 jQuery 电子邮件验证器集成到当前表单中。到目前为止,我已经能够让电子邮件验证消息出现在我的网站上。但是,我无法让它与提交按钮一起正常工作。它要么给出验证消息,让任何人在提交时通过,要么显示消息并让每个人通过。

你可以看到我复制过来的代码:https ://github.com/mailgun/validator-demo/blob/master/index.html

我将它连接到我自己的表单中,当我按下 Enter 或单击提交按钮时,什么也没有发生。我假设它与底部函数中的 Return nothing 代码有关。但是我不知道该放什么来让它显示验证消息,然后允许提交它是成功的,如果不是,则不允许某人通过。

4

2 回答 2

0

如果您拥有 API 密钥(在这种情况下,您可以使用可以从 mailgun 的控制面板中检索的公钥),您可以在此处尝试现场演示:http: //mailgun.github.io/validator-demo /

代码是一样的,也许如果您可以编辑您的问题并添加您正在使用的代码,我可以帮助您调试它。

:)

于 2014-10-02T23:30:29.500 回答
0

MailGun jQuery 示例是一个异步请求,提交过程无需等待 mailgun api 的响应即可工作。

您需要向 webmethod 发出同步请求。您可以使用以下代码

function validateEmailByMailGun(Email){
    $.ajax({
        type: "POST",
        url: "alpha.aspx/CheckEmail",
        data: "{UserName:'" + Email + "'}",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        async: false,
        success: function Success(msg) {
            isMailGunValidEmail = msg.d; //can have true, false or error
        },
        error: function (xhr, ajaxOptions, thrownError) {
            isMailGunValidEmail = false;
            isMailGunError = true;
        }
    });
}

在你的 alpha.aspx 中,创建一个 webmethod

[System.Web.Services.WebMethod]
    public static object CheckEmail(string UserName)
    {
        var http = (HttpWebRequest)WebRequest.Create("https://api.mailgun.net/v2/address/validate?address=" + UserName);
        http.Credentials = new NetworkCredential("api","put your public key here");
        http.Timeout = 5000;
        try
        {
            var response = http.GetResponse();
            var stream = response.GetResponseStream();
            var sr = new StreamReader(stream);
            var content = sr.ReadToEnd();
            JSON.JsonObject js = new JSON.JsonObject(content);
            return Convert.ToBoolean(js["is_valid"]);
        }
        catch (Exception ex)
        {

        }
    }
于 2015-05-19T12:08:18.567 回答