gpt4 book ai didi

ruby-on-rails - 在 Ruby/Rails 中接收邮件

转载 作者:行者123 更新时间:2023-12-04 03:41:20 32 4
gpt4 key购买 nike

我如何在 Ruby on Rails 应用程序中接收邮件而不通过 PostFix 之类的邮件服务器或通过 pop3 等获取邮件?

我要做的是捕获所有发送到@mydomain.com 的邮件,然后在我的应用程序中对它们进行处理。我不需要存储邮件或类似的东西。

这可能吗?

最佳答案

我刚刚为我的 SAAS 实现了这个来自动处理邮件退回通知消息。
打给我,打给你?
你叫我
您可以设置本地邮件服务器。然后它会响应传入的电子邮件,并启动一个 rails 可执行文件来处理电子邮件。不建议使用此方法,因为启动 rails 是一项艰巨的任务(需要几秒钟和大量内存)。您不希望仅仅因为您收到一封电子邮件而启动 Rails 坏小子。您将编写自己的 DDOS 攻击。 (攻击自己。)
我叫你
相反,通过使用单个作业处理所有当前等待的电子邮件,按您自己的时间表轮询电子邮件。您需要设置后台作业处理程序,因为 stock rails 专注于响应 Web 请求。我使用delayed_job,但还有其他选择,包括经常启动一个cron作业。
另一个好处是您不需要管理邮件服务器。把这个头痛留给别人。然后使用 Ruby 库 net::imap 读取传入的邮件并进行处理。
如果您的流程无法识别电子邮件格式,则将消息转发给人工处理。
并确保如果进程除了读取/处理邮件之外还发送邮件,该进程使用 不同电子邮件地址作为其发件人地址。否则,很有可能在此过程中的某个时候,您最终会陷入电子邮件循环和许多 GB 的消息来回传递。例如,您的进程收到一条消息并对其进行响应,但与此同时,发件人(人类)已打开休假响应。然后您的机器人会响应假期响应.....哎呀....
编写自己的邮件服务器
关于:

How would i go about to receive mails in a Ruby on Rails application without going through a mail server like PostFix or to fetch them by pop3 etc.

What i was to do is to catch all mails sent to @mydomain.com and just do something with them in my application. I don't need to store the mails or anything like that.


直接回答:是的,您可以通过编写 smtp 服务器并设置 dns 来做到这一点,这样您的机器将成为域的邮件目的地。您的 smtp 服务器会即时处理消息,它们不会在任何时候存储在您的系统上。
这是一个好主意吗?一点都不。虽然表面上可能相反,但电子邮件是一种存储和转发系统。试图在你的应用处理它们之前避免存储它们是不明智的。这将是一个非常非常糟糕的“优化”。但是,使用访问协议(protocol)(POP3 或 IMAP)是避免安装、配置和管理邮件服务器成本的好方法。

关于ruby-on-rails - 在 Ruby/Rails 中接收邮件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2284451/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com