将电子邮件发送到所有a_user_name@mydomain.com,然后执行代码

时间:2015-06-10 06:21:59

标签: ruby-on-rails ruby-on-rails-3 actionmailer amazon-ses

在我的网络应用程序中,我有一些实例,我想让用户向当地代表发送电子邮件。但我不想公开该用户的电子邮件,因此我希望从a_user_name@mydomain.com发送电子邮件,其中a_user_name因发送者而异。

我迷失的地方是如何处理有人回复该电子邮件的情况,我需要将其发送给原作者。我希望能够抓住该电子邮件,在我们的数据库中查找用户,并向他们发送电子邮件通知他们回复。我如何完成最后一部分?

使用Rails + Amazon SES

谢谢!

2 个答案:

答案 0 :(得分:0)

您可以使用Base64.encode64

2.0.0-p481 :029 >   encrypted_email=Base64.encode64('mike@gmail.com')
 => "bWlrZUBnbWFpbC5jb20=\n" 
2.0.0-p481 :030 > Base64.decode64(encrypted_email)
 => "mike@gmail.com" 

MessageEncryptor

2.0.0-p481 :037 >   crypt = ActiveSupport::MessageEncryptor.new(Rails.configuration.secret_token)
 => #<ActiveSupport::MessageEncryptor:0xcd4d6fc @secret="c07692942cde247c96ea3da23a4d6406ebdad7c37f63c13e100731ce03ce24088dbe419da154fb7e504e777c60c7f6f8850d27f8cb8b7968602244ce5c21bfb3", @cipher="aes-256-cbc", @verifier=#<ActiveSupport::MessageVerifier:0xcd4d4e0 @secret="c07692942cde247c96ea3da23a4d6406ebdad7c37f63c13e100731ce03ce24088dbe419da154fb7e504e777c60c7f6f8850d27f8cb8b7968602244ce5c21bfb3", @digest="SHA1", @serializer=ActiveSupport::MessageEncryptor::NullSerializer>, @serializer=Marshal> 
2.0.0-p481 :038 > encrypted_data = crypt.encrypt_and_sign('mike@gmail.com')
 => "UjF4VFRnRnF1RVJnZXhUUm1KakJZcDFMN1ZoZXVzSmFvLzUwdFkydXNjYz0tLTlsbFI3Vlo4RUNVK2pMZVEzS2tSOWc9PQ==--710d4fcdc202e1b1143e12661d8b40831525f158" 
2.0.0-p481 :039 > decrypted_back = crypt.decrypt_and_verify(encrypted_data)
 => "mike@gmail.com" 

所以,您可以使用专用表来存储加密和原始电子邮件,然后在邮件的FROM部分使用它,以及将其引用以供将来使用。因此,您必须使用Generic电子邮件ID用户可以用来回复,然后您可以发送此加密的隐藏字段,该字段将标识要发送的电子邮件ID并再次发送到该电子邮件。

我知道这将是一个双向过程,如: -

  1. Encrypt发送电子邮件至部分并使用通用电子邮件,用户可在其中回复
  2. 使用包含加密邮件
  3. hidden field
  4. 因此,如果用户回复Generic mail,请检查hidden field中的加密邮件,然后再次重新发送decrypted电子邮件。< / LI>

    希望这有帮助。

答案 1 :(得分:0)

您可以与Mandrill(或其他)等交易电子邮件提供商集成。有各种mandrill rails宝石可以提供帮助。

请参阅:https://mandrill.zendesk.com/hc/en-us/articles/205583197-Inbound-Email-Processing-Overview

入站电子邮件会在以下控制器中被选中:

class InboxController < ApplicationController
  include Mandrill::Rails::WebHookProcessor

  def handle_inbound(event_payload)
   #parse event_payload and take appropriate action
  end
end

然后,您可以解析该电子邮件,让发件人针对您的用户表对其进行验证,并传递消息或其他内容。

您可能希望设置域的子域或完全独立的域,以便将正常的电子邮件流量路由到mydomain.com邮件服务器,然后选择要由rails解析的电子邮件/由webhook从邮件处理。 mydomain.com或其他什么。