создать адрес электронной почты, который ссылается на цепочку сообщений, например Facebook, в приложении ruby ​​on rails - PullRequest
2 голосов
/ 31 марта 2011

Facebook отправляет уведомления по электронной почте, когда в ветке сообщений Facebook появилось новое сообщение. Письмо позволяет ответить на него, не заходя в Facebook. Я думаю, что это делает Facebook, генерируя ответ на адрес электронной почты, связанный с веткой сообщений.

Пример такого адреса электронной почты для ответа на уведомление по электронной почте на Facebook (я изменил некоторые символы, поэтому он не будет работать): m+51r6w8e000000bu1jfpbziio6jmfnvvtkaevxrgojnel8qv@reply.facebook.com

Я пытаюсь реализовать аналогичную функцию в своем приложении rails.

Я все еще новичок в рельсах, и мне интересно, как мне подойти к этому вопросу.

Я пытался зашифровать идентификатор своей ветки сообщений, используя гем encryptor, а затем использовать его в качестве адреса электронной почты в форме: encryptedId@mydomain.com. Проблема заключается в том, что зашифрованный вывод содержит символы, которые не разрешены в адресе электронной почты.

Поскольку я мало знаю о шифровании, я погуглил и нашел возможность кодировать base64 зашифрованный вывод. Это обычная практика для URL. Но, тем не менее, в нем есть символы (например,%), которые не разрешены в адресе электронной почты.

Я обнаружил, что RC4 должен быть алгоритмом шифрования с шестнадцатеричным выводом. Но гем шифратора дает мне 1 шестнадцатеричный символ при использовании этого алгоритма, поэтому он не работает. Вывод: я немного застрял.

Может быть, я смотрю далеко. Есть ли другие подходы, которые я мог бы рассмотреть?

РЕДАКТИРОВАТЬ: дополнительная информация: Я пытаюсь сделать адрес электронной почты неубедительным.

Спасибо!

1 Ответ

4 голосов
/ 31 марта 2011

Если вы пытаетесь сохранить непредсказуемость адресов электронной почты, вы можете создать свой адрес электронной почты из конкатенации:

  • некоторый уникальный аспект цепочки сообщений, такой как идентификатор строки
  • аналогичный уникальный атрибут пользователя, которому отправляется электронное письмо
  • хэш-код обоих этих элементов, закодированный в MD5, плюс уникальная строка, известная только вашей системе
  • случайная соль для MD5

Так, если пользователь 7812 сообщений в теме 8299, вы можете сделать вашу базовую строку

u7812t8299

затем возьмите эту строку "u7812t8299" плюс время отправки электронного письма (скажем, 12:31) и строку, известную вашей системе, как "purpleumbrella"

Строка результата - "u7812t82991231purpleumbrella". Использование:

Digest::MD5.hexdigest("u7812t82991231purpleumbrella")

мы получаем хеш MD5:

5822aceca1f70afdb06f53b5c7e4df99

теперь отправьте пользователю электронное письмо с обратным адресом

u7812t8299-1231-5822aceca1f70afdb06f53b5c7e4df99 @ YourSite

Когда вы получите электронное письмо на этот адрес, ваша система будет знать, что оно предназначено для пользователя 7812, публикуемого в потоке 8299, и потому что только ваша система знает пароль, необходимый для создания суммы MD5 для этой комбинации, что приведет к Строка MD5, начинающаяся с 5822aceca1, позволяет в определенной степени убедиться, что это не случайно сгенерированное электронное письмо от того, кто пытается спамить вашу систему.

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