1

Mailgun の jQuery 電子メール バリデーターを現在のフォームに統合しようとしています。これまでのところ、メール検証メッセージをサイトに表示することができました。ただし、送信ボタンを適切に機能させることができません。検証メッセージを表示して送信時に誰も通過させないか、メッセージを表示して全員を通過させます。

私がコピーしたコードを見ることができます: https://github.com/mailgun/validator-demo/blob/master/index.html

それを自分のフォームにフックしましたが、Enter キーを押すか [送信] ボタンをクリックしても何も起こりません。一番下の関数内の何も返さないコードと関係があると思います。しかし、検証メッセージを表示し、成功した場合は送信を許可し、そうでない場合は誰かが通過できないようにするために何を配置すればよいかわかりません。

4

2 に答える 2

0

API キーを所有している場合 (この場合、mailgun のコントロール パネルから取得できる公開キーを使用できます)、ここでライブ デモを試すことができます: http://mailgun.github.io/validator-demo /

コードは同じです。質問を編集して、使用しているコードを追加できる場合は、デバッグを支援できます。

:)

于 2014-10-02T23:30:29.500 に答える
0

MailGun jQuery の例は非同期要求であり、送信プロセスは mailgun API からの応答を待たずに機能します。

Web メソッドに対して同期要求を行う必要があります。次のコードを使用できます

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 に答える