Postmark::InvalidMessageError 尝试发送邮件时

Posted

技术标签:

【中文标题】Postmark::InvalidMessageError 尝试发送邮件时【英文标题】:Postmark::InvalidMessageError when attempting to send mail 【发布时间】:2012-04-24 18:39:59 【问题描述】:

我使用 Rails 3 + Postmark-Rails。

起初,我在 postmarkapp.com 上创建了帐户来获取我的 api 密钥。

我通过电子邮件链接激活了我的签名 [例如,“vitalyp@dot.com”]

-- 之后,我将这个添加到 application.rb

config.action_mailer.delivery_method   = :postmark
config.action_mailer.postmark_settings =  :api_key => "fdcb..." 

我用这种方式发邮件:

class UserMailer < ActionMailer::Base
  default :from => "vitalyp@dot.com"

  def do_my_mail(to, subj)
    mail(:to => to, :subject => subj)
  end

我收到此错误:

Postmark::InvalidMessageError
Sender signature not defined for From address.

有什么想法吗?

【问题讨论】:

您是否在域名中添加了 DKM 和 SPF 记录? support.postmarkapp.com/customer/portal/articles/… 不,我跳过了这一步。可以回答我的问题吗? 我认为这只是建议:“为了确保有效的电子邮件传递,我们强烈建议您在 DNS 记录中设置电子邮件身份验证..” 【参考方案1】:

建议使用 SPF 和 DKIM,但不是必需的。但是,需要发件人签名(如文档中所述)。

您确定您使用的发件人地址与用于创建发件人签名的发件人地址相同吗?如果您使用不同的电子邮件,可能会发生这种情况。

【讨论】:

也许,我需要使用与服务器域匹配的发件人签名?例如,如果我的服务器域是beer.com,那么电子邮件签名应该是'ahoy@beer.com'? 实际上,您必须使用与您定义签名时完全相同的地址。如果您为 support@myapp.com 定义了发件人签名,则只能使用 From: support@myapp.com 发送。如果您想将一个地址用于多种目的,您可以使用 + 语法使它们不同。例如:当您为 support@myapp.com 定义签名时,support+foo@myapp.com 和 support+bar@myapp.com 是用作 From 的有效地址 此外,还可以使用许多不同的发件人地址进行发送,而无需为每个地址定义发件人签名。例如,如果您正在托管论坛并且需要代表许多用户发送。在这种情况下,请联系 Postmark 支持,支持人员将引导您完成启用该功能的过程。【参考方案2】:

邮戳使用发件人签名来确保您不会将他们的服务用于垃圾邮件目的:

来自http://developer.postmarkapp.com: “需要发件人签名来验证您确实拥有邮箱,并且您不是垃圾邮件发送者(是的,我们也讨厌垃圾邮件)。您必须有一个发件人签名 来自您的应用程序中使用的地址。”

【讨论】:

抱歉,我认为我这边的 SPF 和 DKIM 并不重要。错误消息是关于“未定义的签名”。 我已经阅读了文章“什么是 DKIM 和 SPF,我为什么要使用它?” support.postmarkapp.com/customer/portal/articles/…,上面写着 DKIM 和 SPF 仅供参考 我猜文档页面有点过时了。也许发件人签名在某个时候只是一个建议,但开发人员主页非常明确地表明它现在是一项要求。

以上是关于Postmark::InvalidMessageError 尝试发送邮件时的主要内容,如果未能解决你的问题,请参考以下文章