Rails / Heroku: как разрешить нашим пользователям отправлять фотографии по электронной почте в свою учетную запись в нашем приложении?

#ruby-on-rails #email #heroku #attachment

#ruby-on-rails #Адрес электронной почты #heroku #вложение

Вопрос:

Мне нужно предоставить пользователям возможность отправлять фотографии (или видео) в свою учетную запись в нашем приложении rails 3, которое работает на Heroku.

Поскольку мы находимся на Heroku (без локального хранилища), фотография (или видео) должна быть сохранена в нашей учетной записи S3. И, конечно, нам нужно иметь возможность поддерживать уникальный личный адрес для каждого пользователя, чтобы мы знали, для какой учетной записи предназначена входящая фотография.

Любые предложения будут оценены! Я просматривал аддон CloudMailin для Heroku, но они просто дают один адрес электронной почты, поэтому не уверен, как предоставить каждому из наших пользователей свой уникальный адрес почтового ящика.

Ответ №1:

Используйте cloudmailin — он идеально подходит именно для того, что вы хотите.

Вы уже знаете адрес электронной почты своих пользователей, поэтому, если они отправят электронное письмо на uploads@yourcompany.com затем адрес «от» идентифицирует пользователя, чтобы вы знали, кто его отправил, нет необходимости указывать каждому специальный адрес электронной почты — плюс вы можете отклонить его, если письмо от кого-то, кого вы не узнаете.

Cloudmailin обрабатывает всю электронную почту и smtp, а затем просто отправляет сообщение в ваше приложение (на указанный вами адрес электронной почты) В сообщении и т. Д. В некоторых планах вы можете даже заставить cloudmailin помещать вложения прямо в S3 для вас

Комментарии:

1. на самом деле, мы не знаем адреса электронной почты пользователей (мы знаем некоторые, но не все). хотя мы пытались выяснить, используем ли мы общий домен @my_catchall.com это перенаправляет в нашу облачную почту информацию о том, позволяет ли нам облачная почта видеть «исходное» место назначения. это позволит нам узнать, к какой учетной записи прикрепить фотографию! не могу найти информацию в их документах, пока нет ответа на электронное письмо технической поддержки.

2. Привет, я один из разработчиков CloudMailin. Мы пытались ответить на ваше электронное письмо, но, похоже, оно отказало? С CloudMailin вы можете либо переслать свою электронную почту (и вы можете увидеть оригинал на адрес из заголовков почты), либо перенаправить весь трафик электронной почты на домен (или поддомен), используя функцию пользовательских доменов. немного больше информации на <url> docs.cloudmailin.com/custom_domains но не стесняйтесь, напишите нам электронное письмои мы обязательно ответим.

Ответ №2:

Просто идея

  • используйте приложения Google (когда вы управляете своим собственным доменным именем, кстати, может быть хорошей идеей использовать отдельное доменное имя для отправки по электронной почте) или вашего собственного провайдера, если у вас большие почтовые ящики поддержка всех адресов.
  • захватить всю учетную запись, т. е. uploads@uploads-company.com , который будет получать почту от всех пользователей
  • используйте user-email-token@uploads-company.com где user-email-token — это уникальная и трудно угадываемая (пользователь получает ее, посетив страницу своей учетной записи) вещь, которая связывает это электронное письмо с пользователем в вашей системе

Основы реализации

  • пользователь отправляет электронное письмо на специальный адрес электронной почты
  • пользователь, который знает, как читать электронные письма (периодически, imap / pop), извлекать вложения и загружать их на Amazon S3 , знает, какой токен электронной почты принадлежит какому пользователю
  • используйте delayed_job, чтобы позаботиться о процессе (http://devcenter.heroku.com/articles/delayed-job )
  • может использовать папку / app / tmp на heroku в качестве временного хранилища перед загрузкой в S3 (размер ограничен, может не подходить для больших видеороликов)