我有一个托管在AWS上的Rails 4.2应用程序,该应用程序使用SES来发送电子邮件。我将SNS设置为在电子邮件退回时将通知发布到应用程序。如果我通过SES控制台发送测试电子邮件,则与SNS订阅关联的终结点会被退回通知完全按预期方式被AWS击中。从应用程序本身发送的电子邮件被退回时,尽管在SES控制台中显示的电子邮件统计信息中似乎存在相应的退回,但端点没有受到攻击。
如果从应用程序发送的电子邮件带有Return-Path
,则与返回路径关联的电子邮件确实会从SES邮件程序守护程序收到“传递状态通知(失败)”消息(尽管该电子邮件确实会转到垃圾邮件)。我还检查了Apache access_log
和error_log
,仅在通过SES控制台发送电子邮件时看到退回通知端点命中。
应用内的电子邮件是通过ActionMailer发送的,其中delivery_strategy
为:aws_sdk
(由aws-sdk-rails
gem提供)。我还尝试过使用带有:smtp
和SES凭证的email-smtp.us-east-1.amazonaws.com
的投放策略-两种策略之间的唯一区别是:smtp
策略没有遵循{{1} }。 “发件人”地址中使用的域和电子邮件均已通过AWS进行了验证,并且DKIM已启用,验证并似乎正在运行。域的“退回通知” SNS主题是正确的(并且该主题的订阅已得到确认)。
我已经测试过将电子邮件发送到不存在域的地址,不存在真实域和Return-Path
的地址。使用该应用程序进行的所有测试均不会将任何内容发布到通知端点,而使用SES控制台进行的所有测试均会导致预期的行为。所有Amazon服务都使用相同的区域(us-east-1),并且所有期望在不发生退信的情况下发送的电子邮件也会得到适当的发送。
传递邮件的代码本质上是这样的:
bounce@simulator.amazonses.com
我尝试取出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
,它对被命中的SNS端点没有影响。
我已经在此处和AWS文档中进行了大量搜索,但没有发现任何可改变此行为的内容。在应用程序发送时如何获得退回通知的任何提示将不胜感激。
答案 0 :(得分:0)
如果您使用的是经过简单邮件服务验证的电子邮件地址来发送电子邮件,请确保为该电子邮件地址配置了通知主题。如果仅为您的域配置了它,那么它将无法正常工作。
我遇到了与您描述的问题相同的问题,这是因为我只在域名上配置了通知,而没有在电子邮件地址上进行配置。
答案 1 :(得分:0)
已经很晚了,但是肯定会帮助其他人,我面临着一个同样的问题,那就是我从网络应用程序发送电子邮件时意识到缺少配置集标题。 我是通过SES发送的测试邮件屏幕了解此信息的,其中有一个配置集标题。 Aws SES sent test email screen 因此,通过添加此标头,您将开始接收通知。