如何防止用户使用虚假电子邮件,这会导致我的邮件服务器失败?

时间:2015-03-02 08:37:45

标签: java email sendgrid email-bounces

我正在使用SendGrid向用户发送注册电子邮件,我们的用户正在使用虚假电子邮件进行注册。用户无法访问对我们网站有保护作用的网站。但是,当SendGrid尝试向他们发送电子邮件时,它会反弹。

不幸的是,我们每天都面临超过20-30%的假电子邮件,这可能会导致SendGrid完全阻止我们。什么是以编程方式或Web透视图的解决方案?

免责声明:我知道这不是一个编程问题,但不知道我应该在哪里问它。

4 个答案:

答案 0 :(得分:3)

尽可能改变方法。请您的用户向您发送电子邮件以进行自我注册(即空电子邮件),并使用其身份验证信息回复此电子邮件。此时您确定他们是邮件地址的所有者(否则他们将不会收到凭据)并且该电子邮件不是假的。

答案 1 :(得分:1)

只需丢弃传入的弹跳,您就不需要它们。此外,您可能希望从Amazon查看简单电子邮件服务,以摆脱您自己的邮件设置问题。

在一天结束时,如果你想发送电子邮件,你必须忍受回报,因此你必须扩展你的服务器/服务来处理它。

答案 2 :(得分:0)

您需要尽一切努力确保用户使用有效的电子邮件地址注册。以下是一些方法:

  • 强制新用户在授予他们访问网站权限之前验证其电子邮件地址。电子邮件地址可以通过向他们发送包含必须单击以验证帐户的链接的电子邮件进行验证。

  • 在用于输入电子邮件地址的输入字段上使用type =“email”。好的浏览器(如chrome)会在允许表单提交之前强制进行简单的正则表达式匹配。

  • 使用正则表达式过滤掉明显不好的电子邮件。有大量的电子邮件地址正在浮动,建议查看大型开源Web框架中使用的那些,例如Django。

  • Mailgun提供了一个API来验证电子邮件地址。它应该被智能地使用(即:不要在每次注册时发送垃圾邮件),并且可以捕获常见的拼写错误甚至建议拼写错误修复。 https://documentation.mailgun.com/api-email-validation.html

答案 3 :(得分:0)

如果您使用的是SendGrid邮件列表,则可以选择使用MailboxValidator导入列表,屏幕显示无效的电子邮件,然后在SendGrid自动更新列表。

https://www.mailboxvalidator.com/resources/articles/how-to-import-email-list-from-sendgrid/

但是,如果您使用的是SendGrid API,则可以在调用SendGrid API之前尝试将MailboxValidator免费API(每30天300次免费验证)集成到您的代码中。

https://www.mailboxvalidator.com/api-single-validation

用于调用API的示例Java代码

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLEncoder;
import java.util.Hashtable;
import java.util.Map;

public class test {
    public static void main(String[] args) {
        try {
            String key = "Enter_License_Key";
            Hashtable<String, String> data = new Hashtable<String, String>();
            data.put("format", "json");
            data.put("email", "Enter_Email");

            String datastr = "";
            for (Map.Entry<String,String> entry : data.entrySet()) {
                datastr += "&" + entry.getKey() + "=" + URLEncoder.encode(entry.getValue(), "UTF-8");
            }
            URL url = new URL("https://api.mailboxvalidator.com/v1/validation/single?key=" + key + datastr);
            HttpURLConnection conn = (HttpURLConnection) url.openConnection();
            conn.setRequestMethod("GET");
            conn.setRequestProperty("Accept", "application/json");

            if (conn.getResponseCode() != 200) {
                throw new RuntimeException("Failed : HTTP error code : " + conn.getResponseCode());
            }

            BufferedReader br = new BufferedReader(new InputStreamReader((conn.getInputStream())));

            String output;

            while ((output = br.readLine()) != null) {
                System.out.println(output);
            }
            conn.disconnect();
        }
        catch (MalformedURLException e) {
            e.printStackTrace();
        }
        catch (IOException e) {
            e.printStackTrace();
        }
    }
}