捕获所有 a_user_name@mydomain.com 的电子邮件并执行代码

Catch emails to all a_user_name@mydomain.com, and execute code

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

我迷路的地方是如何处理有人回复那封邮件的情况,我需要把它交给原作者。我希望能够捕获该电子邮件,在我们的数据库中查找用户,然后向他们发送一封电子邮件,通知他们回复。我该如何完成这最后一部分?

使用 Rails + 亚马逊 SES

谢谢!

你可以使用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" 

So.you 可以使用专用的 table 来存储加密的和原始的电子邮件,然后在邮件的发件人部分使用它,并参考它以备将来使用。所以你必须使用Generic 用户可以用来回复的电子邮件 ID,然后您可以发送这个加密的隐藏字段,它将标识要发送的电子邮件 ID 并再次发送到该电子邮件。

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

  1. Encrypt 在“发件人”部分发送电子邮件并使用 通用电子邮件,用户可以在其中回复
  2. 使用 hidden field 包含 加密的 邮件
  3. 因此,如果用户回复 Generic mail,检查来自 hidden field 的加密邮件,然后再次 重新发送 decrypted 电子邮件。

希望对您有所帮助。

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

参见: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

然后您可以解析该电子邮件,让发件人针对您的用户验证它 table 并将邮件传递给其他人。

您可能想要设置您的域的子域或完全独立的域,以便您可以将正常的电子邮件流量路由到您的 mydomain.com 邮件服务器并接收要由 rails 解析的电子邮件/ 由 webhook 从邮件处理。mydomain.com 或其他任何内容。