【问题标题】:mailgun email validation responsemailgun 电子邮件验证响应
【发布时间】:2023-03-15 10:32:01
【问题描述】:

我是 Mailgun 和 REST 的新手,需要一些帮助。

如果我使用 Mailgun 提供的代码:

RestClient client = new RestClient();
client.BaseUrl = "https://api.mailgun.net/v2";
client.Authenticator = new HttpBasicAuthenticator("api", "xxxx");
RestRequest request = new RestRequest();
request.Resource = "/address/validate";
request.AddParameter("address", "me@mydomain.com");
return client.Execute(request);

如何检索和处理地址有效与否的响应?

【问题讨论】:

标签: c# email-validation mailgun


【解决方案1】:

首先您不应发布私人信息,例如您的此类 API 的公钥

只需使用惊人的Postman Chrome app,您就可以看到此类请求的结果:

click here 以全分辨率查看下图

我敢肯定,如果你不是 return client.Execute(request); 你会这样做

var result = client.Execute(request);
return result;

并在return 中添加断点,您可以检查从调用传递的对象是什么...无需测试,我相信您可以转换result.Content(因为它是 RestSharp 附加响应内容的地方) 放入一个对象并使用该对象(或使用dynamic 类型)。


现在,在 VS 中测试您的代码:

click here 以全分辨率查看下图

然后您可以使用 dynamic 对象,例如:

click here 以全分辨率查看下图

public void GetResponse()
{
    var client = new RestClient();
    client.BaseUrl = "https://api.mailgun.net/v2";
    client.Authenticator = new HttpBasicAuthenticator("api", "pubkey-e82c8201c292691ad889ace3434df6cb");

    var request = new RestRequest();
    request.Resource = "/address/validate";
    request.AddParameter("address", "me@mydomain.com");

    var response = client.Execute(request);
    dynamic content = Json.Decode(response.Content);

    bool isValid = content.is_valid;
    string domain = content.parts.domain;
}

并像传递的 json 一样对待响应的内容:

{
    "address": "me@mydomain.com",
    "did_you_mean": null,
    "is_valid": true,
    "parts": {
        "display_name": null,
        "domain": "mydomain.com",
        "local_part": "me"
    }
}

【讨论】:

  • 我正在使用:动态内容 = System.Runtime.Serialization.Json.Decode(response.Content);但我收到错误:编译器错误消息:CS0234:命名空间“System.Runtime.Serialization.Json”中不存在类型或命名空间名称“解码”(您是否缺少程序集引用?)
  • 添加:使用Newtonsoft.Json;并将代码更改为:动态内容 = JsonConvert.DeserializeObject(response.Content);现在可以了
  • Json.Decode 来自System.Web.Helpers。如果答案对您有所帮助,请将其标记为正确答案,并让其他人看到您的问题,即有正确答案。
【解决方案2】:

此代码对我有用。我没有使用 RESTClient 并编写了自己的代码(效果很好)

[System.Web.Services.WebMethod]
    public static object GetEmailInfo(string UserName)
    {
        var http = (HttpWebRequest)WebRequest.Create("https://api.mailgun.net/v2/address/validate?address=" + UserName);
        http.Credentials = new NetworkCredential("api","public key");
        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)
        {

        }
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-08-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-07
    • 1970-01-01
    • 2016-09-28
    相关资源
    最近更新 更多