捕获所有 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"
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 并再次发送到该电子邮件。
我知道这将是一个双向过程,例如:-
Encrypt
在“发件人”部分发送电子邮件并使用 通用电子邮件,用户可以在其中回复
- 使用
hidden field
包含 加密的 邮件
- 因此,如果用户回复
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 或其他任何内容。
在我的网络应用程序中,我有一些实例让用户可以向他们的本地代表发送电子邮件。但我不想公开该用户的电子邮件,所以我希望从 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"
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 并再次发送到该电子邮件。
我知道这将是一个双向过程,例如:-
Encrypt
在“发件人”部分发送电子邮件并使用 通用电子邮件,用户可以在其中回复- 使用
hidden field
包含 加密的 邮件 - 因此,如果用户回复
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 或其他任何内容。