我需要使用任意字符串并使其可以安全地用作电子邮件地址的一部分,必要时替换字符。这是向API提交文本,该API要求将值编码到电子邮件发送到的地址中。然而,这充满了陷阱,我想确保输入的内容不会破坏邮件传递。我已经计划对整个本地部分进行双重引用,这将减轻很多问题。
我找到了a guide to what characters can be used in the local part of an email address,但它似乎没有区分'它被RFC禁止'和'它可能令人困惑所以最好远离'和'它只能在转义时使用正确”。有没有人比适当的RFC本身更清楚/更快地阅读?
编辑:我无法控制接收端的解析,也无法更改文本提交的方式,而不是直接的ASCII字符串。
答案 0 :(得分:1)
RFC本身非常清晰。忽略过时和引用的表单,地址的本地部分是:
atext = ALPHA / DIGIT / ; Any character except controls,
"!" / "#" / ; SP, and specials.
"$" / "%" / ; Used for atoms
"&" / "'" /
"*" / "+" /
"-" / "/" /
"=" / "?" /
"^" / "_" /
"`" / "{" /
"|" / "}" /
"~"
答案 1 :(得分:0)
为什么不直接将您在电子邮件地址中使用的字符限制为标记为“确定”的in the table you referenced个字符?
包括加号,减号,连字符,句号,大写和小写字母,数字和下划线。
答案 2 :(得分:0)
假设您控制API,为什么Base64不对数据进行编码?
Base64EncodeString("Hello")
Base64DecodeString("SGVsbG8=")
您应该使用电子邮件安全字符=
减去替换填充字符-
。
修改强>
似乎=
是一个安全的角色,无需替换它
但是,生成的文本可能以数字开头,因此请用字母填充并让接收者丢弃填充。