2010-09-07 101 views
0

我需要一個任意的字符串,並使其可以安全地用作電子郵件地址的一部分,並在必要時替換字符。這是提交文本到API,要求將值編碼到電子郵件發送到的地址。然而,這充滿了陷阱,我想確保無論輸入什麼都不會中斷郵件傳遞。我已經計劃只用雙引號引用整個本地部分,這將緩解很多問題。如何使任意字符串電子郵件地址安全?

我找到了a guide to what characters can be used in the local part of an email address,但它似乎沒有區分'它被RFC禁止'和'它可能會混淆,所以最好遠離'和'它只能在正確逃脫時使用'。有沒有人提到比相應的RFC本身更清晰/更快速閱讀的內容?

編輯:我無法控制接收端的解析,也無法更改文本如何被提交爲除直接ASCII字符串以外的其他內容。

回答

0

你爲什麼不把你在電子郵件地址中使用的字符限制在標記爲「OK」的in the table you referenced

這將包括加號,減號,連字符,句點,大寫和小寫字母,數字和下劃線。

+0

難以在電子郵件地址中包含一個字符串'John Doe(ABD Admin),Jane Doe(ABD CEO)',而沒有完全徹底清除它。 – Oesor 2010-09-07 19:24:30

+0

@Oesor:'John.Doe.ABD.Admin @ wherever.com' – 2010-09-07 19:45:34

+0

然後字符串是'John.Doe.ABD.Admin'。我並沒有試圖組成一個我可以用於這樣和那樣的字符串的電子郵件地址,我正在與一個API進行交互,該API要求字段作爲郵件發送到的電子郵件地址的一部分被傳遞。 IE,電子郵件就像'foo =快速的棕色狐狸/酒吧=跳過懶惰[email protected]'理論上將foo和bar分配給這些字符串。是的,這是一個有點瘋狂的API。 – Oesor 2010-09-07 21:04:48

1

RFC本身非常清晰。忽略過時並引述形式,地址的本地部分是:

atext  =  ALPHA/DIGIT/; Any character except controls, 
        "!"/"#"/ ; SP, and specials. 
        "$"/"%"/ ; Used for atoms 
        "&"/"'"/
        "*"/"+"/
        "-"/"/"/
        "="/"?"/
        "^"/"_"/
        "`"/"{"/
        "|"/"}"/
        "~" 
+0

OP引用的表給出了爲什麼不應該使用這些字符的一些非常好的理由。 – 2010-09-07 19:21:17

+0

是的,找到rfc 3696(http://tools.ietf.org/html/rfc3696#page-5),它能夠很好地總結各種規則。 – Oesor 2010-09-07 19:23:22

0

假設你控制API,爲什麼不Base64編碼的數據?

Base64EncodeString("Hello") 
Base64DecodeString("SGVsbG8=") 

你或許應該像-減去一個電子郵件安全的字符替換填充字符=

編輯
看來=是一個安全特性,無需更換。
但是,生成的文本可能會以數字開頭,以便用字母填充並讓接收方丟棄填充。

+0

這將工作,如果你不介意有不可讀的電子郵件地址。 – 2010-09-07 19:21:57

+0

如果接收端可以採用base64編碼的字符串,那將會很棒。 – Oesor 2010-09-07 19:24:58

+0

@羅伯特 - 誰讀他們的電子郵件呢? :) – Greg 2010-09-07 19:25:08

相關問題