1

我有一个奇怪的问题,我试图用 ruby​​ 的 net/smtp 库来解决。实际上,我想这是关于 smtp 的一般问题。基本上,如果响应是错误的,我不希望有一封电子邮件告诉我交付失败(至少我不想看到它)。我想在不使用 GUI 中的过滤器的情况下完成此操作。我正在寻找编码解决方案。我不确定 smtp 协议是否可行,但我想我会尝试。到目前为止,这是我的代码:

msg = "Subject: Hi There!\n\nThis works, and this part is in the body."
smtp = Net::SMTP.new 'smtp.gmail.com', 587
smtp.enable_starttls
smtp.start("gmail.com", username, password, :login) do
  response = smtp.send_message(msg, email, recipients)
  p response.message
end

我一直在阅读,试图弄清楚这是否可能,但我没有发现任何说它可能的东西。

任何帮助都会很棒。提前致谢。

4

1 回答 1

1

你不能真正用 SMTP 做到这一点,尤其是在使用 gmail 服务器时,因为它们强制执行正确的发件人字段,所以你也不能欺骗自己的邮件地址。处理和发送退回邮件是 SMTP 的固有功能,您无法以任何可靠的方式真正改变这一点。

想到了两种替代解决方案:

a) 向您的 GMail 帐户添加一个过滤器,以便以您选择的任何方式处理退回邮件(删除它们、将它们放在单独的文件夹中、转发它们等)。

b)您可以使用像https://github.com/nu7hatch/gmail这样的 ruby​​ GMail gem并以编程方式扫描您的 GMail 帐户以查找退回邮件,然后以您选择的任何方式处理它们,只需使用普通的 ruby​​ 代码。

解决方案 a) 非常简单,只需要很少的设置,但它不像 b) 那样灵活。这取决于您想要做什么以及您希望如何过滤和处理反弹。

于 2013-06-14T02:41:47.977 回答