Как сделать адрес электронной почты произвольной строкой безопасным? - PullRequest
0 голосов
/ 07 сентября 2010

Мне нужно взять произвольную строку и сделать ее безопасной для использования в качестве части адреса электронной почты, заменяя символы при необходимости.Это делается для передачи текста в API, который требует кодирования значений в адрес, на который отправляется электронное письмо.Однако, это чревато подводными камнями, и я хотел бы убедиться, что все, что вводится, не нарушит доставку почты.Я уже планирую просто заключить в двойные кавычки всю локальную часть, что уменьшит многие проблемы.

Я нашел руководство о том, какие символы можно использовать в локальнойчасть адреса электронной почты , но, похоже, не проводится никакого различия между «Это запрещено RFC» и «Это может сбить с толку, поэтому лучше держаться подальше» и «Его можно использовать только при правильном выходе».Кто-нибудь имеет ссылку на что-то более понятное / более быстрое для чтения, чем сами соответствующие RFC?

Редактировать: Я не могу контролировать синтаксический анализ на принимающей стороне, и я не могу изменить способ отображения текстапередается как нечто отличное от прямой строки ASCII.

Ответы [ 3 ]

1 голос
/ 07 сентября 2010

Сами RFC совершенно ясны. Игнорирование устаревших и цитируемых форм, локальная часть адреса:

atext       =       ALPHA / DIGIT / ; Any character except controls,
                    "!" / "#" /     ;  SP, and specials.
                    "$" / "%" /     ;  Used for atoms
                    "&" / "'" /
                    "*" / "+" /
                    "-" / "/" /
                    "=" / "?" /
                    "^" / "_" /
                    "`" / "{" /
                    "|" / "}" /
                    "~"
0 голосов
/ 07 сентября 2010

Если вы контролируете API, почему бы Base64 не кодировать данные?

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

Возможно, вам следует заменить символ заполнения = на безопасный для электронной почты символ, такой как - минус.

Редактировать
Кажется, = - безопасный символ, его не нужно заменять.
Тем не менее, результирующий текст может начинаться с цифры, поэтому дополните его буквой, и получатель откажется от отступа.

0 голосов
/ 07 сентября 2010

Почему бы вам не ограничить символы, которые вы используете в адресе электронной почты, символами в таблице, на которую вы ссылались и которые помечены "ОК"?

Это будет включать плюс, минус, дефис, точку, прописные и строчные буквы, цифры и подчеркивание.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...