繁体   English   中英

如何防止用户使用伪造的电子邮件,这导致我的邮件服务器出现故障?

[英]How can I prevent users from using fake emails, which is causing my mail server to fail?

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

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

免责声明:我知道这不是编程问题,但不确定应在哪里提出。

如果可能,请更改方法。 要求您的用户向您发送一封电子邮件以进行注册(例如,一封空电子邮件),并使用其身份验证信息回复此电子邮件。 此时,您可以确保他们是邮件地址的所有者(否则他们将不会收到凭据),并且电子邮件不是伪造的。

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

归根结底,如果您想发送电子邮件,则必须忍受退货,因此必须扩展服务器/服务来处理它。

您将要尽一切努力确保用户使用有效的电子邮件地址进行注册。 这是几种方法:

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

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

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

  • Mailgun提供了一个API来验证电子邮件地址。 应该明智地使用它(即:不要在每次注册时都对其进行垃圾邮件处理),并且可以捕获常见的拼写错误,甚至提出拼写错误的解决方法。 https://documentation.mailgun.com/api-email-validation.html

如果您使用的是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();
        }
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM