我有一个奇怪的问题,我正试图用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
我一直在四处寻找,试图弄清楚这是否可行,而且我没有发现任何可能的事情。
任何帮助都会很棒。提前谢谢。
答案 0 :(得分:1)
使用SMTP时,您无法真正做到这一点,尤其是在使用gmail服务器时,因为它们强制执行正确的字段,因此您也无法欺骗自己的邮件地址。处理和发送退回邮件是SMTP的固有功能,您无法以任何可靠的方式真正改变它。
我想到了两种替代解决方案:
a)在您的GMail帐户中添加一个过滤器,以您选择的任何方式处理退回邮件(删除它们,将它们放在单独的文件夹中,转发它们等)。
b)您可以使用像https://github.com/nu7hatch/gmail这样的ruby GMail gem,并以编程方式扫描您的GMail帐户以获得退回,然后以您选择的纯红宝石代码的任何方式处理它们。
解决方案a)非常简单,只需要很少的设置,但它不像你用b)做的那样灵活。这取决于您想要做什么以及如何过滤和处理跳出。