验证垃圾邮件,临时电子邮件和具有无效域的电子邮件

时间:2018-12-24 15:33:15

标签: c# asp.net asp.net-mvc email c#-4.0

最近我注意到很多用户都在我的网站上注册,他们都使用一次性电子邮件,临时电子邮件地址或虚假电子邮件在该网站上进行注册...

为部分防止这种情况,我添加了mailgun电子邮件验证功能,该功能可以告诉我电子邮件是否有效,是否为一次性邮件...

这过滤掉了95%的虚假电子邮件和用户,但是仍有一小部分被“忽略”。我发现要做的是通过代码执行以下操作:

 public static bool IsValidEmail(string email)
        {
            RestClient client = new RestClient();
            client.BaseUrl = new Uri("https://api.mailgun.net/v3");
            client.Authenticator = new HttpBasicAuthenticator("api", "");
            RestRequest request = new RestRequest();
            request.Resource = "/address/validate";
            request.AddParameter("address", email);
            var res = new JavaScriptSerializer().Deserialize<RootObject>(client.Execute(request).Content);
            if (res.is_disposable_address || res.is_valid==false)
                return false;
            return true;
        }

这是我之前描述的通过mailgun进行的第一步...第二种防止垃圾邮件/虚假用户的方法是,我在数据库中手动设置了一个表,该表中有不允许加入黑名单的域。 。逻辑是:

   public static bool IsValid(string email)
    {
        using (var ctx = new myEntities())
        {
            var blacklistedProviders = ctx.BlacklistedDomains.ToList();
            foreach (var item in blacklistedProviders)
            {
                if (email.ToLower().Contains(item.DomainName.ToLower()))
                    return false;
            }
        }
        return true;
    }

但是,我认为这不会阻止他们在网站上进行更多恶意操作...

我还添加了Google Recaptcha来加强垃圾邮件发送者的注册过程,这也做得很好。...

所以我的问题是:

  1. 我还有其他方法可以验证电子邮件以查看它是一次性电子邮件还是无效电子邮件
  2. 我还能采取什么其他方式来防止用户创建假帐户?

有人可以帮我吗?

0 个答案:

没有答案