![](/img/trans.png)
[英]How to design fail over for Java application which is reading emails from Gmail Server
[英]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
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.