我有一个托管在AWS上的Rails 4.2应用程序,它使用SES来发送电子邮件。我已经设置了SNS,以便在电子邮件退回时向应用程序发送通知。如果我通过SES控制台发送测试电子邮件,与SNS订阅相关联的端点会完全按照退回通知的预期被AWS命中。当从应用程序本身发送的电子邮件退回时,端点不会被命中,尽管在SES控制台中显示的电子邮件统计中似乎存在相应的退回。
如果从应用程序发送的电子邮件带有Return-Path
,与返回路径相关联的电子邮件确实会收到来自SES mailer守护程序的“Delivery Status Notification(Failure)”消息(尽管该电子邮件确实会发送垃圾邮件)。我还检查了Apache access_log
和error_log
,只有通过SES控制台发送电子邮件时才会看到退回通知端点。
应用程序中的电子邮件通过:aws_sdk
的delivery_strategy
邮件发送(由aws-sdk-rails
gem提供)。我还尝试使用:smtp
的交付策略和email-smtp.us-east-1.amazonaws.com
以及SES凭据--这两种策略之间的唯一区别是:smtp
策略无法遵循Return-Path
。From”地址都已通过AWS验证,并且DKIM已启用、验证且似乎正在工作。域的Bounce SNS主题是正确的(并且主题的订阅已确认)。
我已经测试了向不存在域的地址、不存在的地址(具有真实的域和[[email protected]](https://stackoverflow.com/cdn-cgi/l/email-protection)
)发送电子邮件。使用应用程序进行的所有测试都没有向通知端点发送任何邮件,使用SES控制台进行的所有测试都产生了预期的行为。所有Amazon服务都使用相同的区域(us-east-1),并且所有预期在没有弹跳的情况下被递送的电子邮件都被适当地递送。
传递邮件的代码基本上看起来像这样:
class SomeMailer < ApplicationMailer
def some_email
...
mail(
to: destination,
from: sender,
cc: cc_addresses,
subject: some_subject,
template_name: some_template,
return_path: return_path_email
)
end
end
字符串
我试过取出return_path
,这对被击中的SNS端点没有影响。
我在这里和AWS文档中做了很多搜索,没有发现任何改变这种行为的东西。任何关于如何在应用程序发送时发送退回通知的提示都将非常感谢。
3条答案
按热度按时间yfwxisqw1#
如果您使用Simple Mail Service验证的电子邮件地址发送电子邮件,请确保为该电子邮件地址配置了通知主题。如果仅为您的域配置了通知主题,则通知主题将不起作用。
我遇到了你描述的同样的问题,这是因为我只有我的域名配置的通知,而不是电子邮件地址。
huwehgph2#
这是晚了,但肯定会帮助别人,我面临着同样的问题,而不是意识到我是失踪的配置集标题时,我从我的网络应用程序发送电子邮件.我知道这通过SES发送测试邮件屏幕,其中有一个配置集标题. Aws SES sent test email screen所以通过添加此标题,您将开始接收通知.
wfsdck303#
检查您的AWS SES配置,以确保退回通知设置正确。此外,AWS SES具有一项名为SNS主题配置集的功能,允许您将退回和投诉通知发布到SNS主题,然后您的应用程序可以订阅该主题。
有关更多信息,请查看“Using Rails with SES, SNS and SQS to avoid bounce rate“