2014-10-29 72 views
4

我可以創建谷歌帳戶(Gmail的)無限的電子郵件別名,REF:http://www.gizmodo.com.au/2014/09/how-to-use-the-infinite-number-of-email-addresses-gmail-gives-you/如何使用PHP過濾/刪除Google電子郵件ALIAS?

但我需要過濾的電子郵件地址,以避免用戶使用相同的原始電子郵件寄存器我的應用程序。

我想知道是否有什麼要解決這個問題?或者我將必須過濾正則表達式?

+1

你不應該這樣做。有很多使用Gmail的網域,您不知道使用的是Gmail。還有其他一些原因可能會導致用戶在其用戶名中輸入「+」。 – Brad 2014-10-29 17:57:19

+0

@Brad我可以檢查電子郵件域名是否與Google帳戶相關聯?通過DNS,例如 – 2014-10-29 18:07:44

+0

@Jonas不可靠。一家公司可以使用Google Apps,但在Google之前仍然有一些其他SMTP服務器。這並不罕見。例如,很多公司將在Google Apps和Exchange之間分割他們的郵件用戶。從某件事物遷移到Google Apps時,這是一種非常常見的情況。 – Brad 2014-10-29 18:19:26

回答

10

我不同意這個評論,說明你不應該去掉「過濾器」(例如user_email +some_filter_to_flag_incoming_messages @ example.org)。 「你的用例與我的用例不一樣」等等。

TL;博士:你正在尋找的正則表達式是:'(\+.*)(?=\@)'

說明:

開始,編寫文字「+」號和任何單個字符匹配一個正則表達式, 任何次數:

'(\+.*)' 

當與空字符串替換該模式,這會變成[email protected]tristan。如果您決定拆分@符號,恭喜,將結果字符串連接到'@'+ domain.TLD並完成。我提到這一點,以防你已經拆分了電子郵件地址,而且它只是掛在身邊。

如果你分裂的@符號的用戶電子郵件地址,您需要使用一個「積極前瞻」(如果它是由這個東西進行匹配這個模式我指定)告訴你的對手何時停止(所以我們沒有帶走太多):

'(\+.*)(?=\@)' 

與此到位,我們得到[email protected]。 Hooray,那實際上並不那麼粗糙。


[0]:在我的應用程序之一,我存儲的用戶給我通信原含過濾器的電子郵件地址,但跟蹤過濾器的使用,並考慮規範賬戶(參考-內部)到是沒有過濾器的版本(例如[email protected])。我這樣做是爲了讓通過電子郵件地址定位的用戶更容易搜索對方。

我理解爲什麼人們使用別名/過濾器:

  • 他們給它們可以用來跟蹤垃圾郵件發送者(彷彿銷售榜前一封電子郵件收割機將不會刪除該過濾器)的錯覺
  • 它們可用於路由電子郵件或觸發事件(例如,當您收到來自[email protected]的電子郵件時發送文本)
  • 「omg我可以做到這一點嗎?因子

這就是說,「我明白了,像過濾器這樣的人」,但是作爲應用程序作者或公司記下它們的理由是有道理的。

+1

編輯:哇,爲什麼downvote?這是一個正則表達式問題,現在它有一個可行的答案。 – 2015-01-07 13:59:10

+0

關於您的[0]要點:確切地說,操縱電子郵件列表以刪除別名非常簡單。 – 2015-01-08 19:51:47

+0

一個新問題:我可以只過濾Gmail域名的電子郵件,以避免在我的Web應用程序中使用相同電子郵件地址的真正AKA沒有別名(重複的電子郵件),你在想什麼? .... PS:我這樣說,考慮到Gmail的流行 – 2015-01-08 19:57:18

相關問題