使用 MailGun 发送邮件时删除 'on behalf of'

Removing 'on behalf of' when sending mail using MailGun

我正在尝试弄清楚如何使用 MailGun Golang API 发送邮件而不用发送邮件 'on behalf of'。

这是发件人地址当前的样子(其中 foo.com 是发件人的电子邮件域,bar.com 是我的域):

john=foo.com@mail.bar.com on behalf of John Smith <john@foo.com>

我需要做什么才能让它看起来像这样:

John Smith <john@foo.com>

我已经根据 MailGun 说明设置了 SPF 和 DKIM,并且一切正常。我在发送邮件时也使用了 SetDKIM(true)。是否缺少某些设置或需要进行额外验证?

您是否尝试从不同于您设置 SPF/DKIM 的域发送?

您只能从您使用 Mailgun 授权的域发送白标电子邮件。

您最有可能需要将电子邮件 header 中的 sender 属性 设置为发件人地址。

我在 node.js 项目中使用 NodeMailer 时遇到了同样的问题。 Gmail 和 Thunderbird 会正确显示发件人地址,但 Outlook 会将发件人地址显示为

emailname=example.com@mail.example.com on behalf of emailname@example.com

当我查看完整的电子邮件 header 时,我发现 header 中的 sender:emailname=example.com@mail.example.comfrom:emailname@example.com

我们查看了 spf 和 dkim 记录,起初认为这是一个问题,但它们很好,在电子邮件中 ​​header 它甚至说 spf 和 dkim 都通过了,所以我注意到发件人 header 与 from 不同,Outlook 会注意 gmail 和 thunderbird 不太关心的地方。

尝试将 sender header 设置为 from 值。

以下是其中一封错误电子邮件 header 的部分示例,已编辑以匹配上述示例

Received-SPF: pass (google.com....
Authentication-Results: mx.google.com;
       dkim=pass header.i=@mail.example.com;
       spf=pass (google.com.....
Sender: emailname=example.com@mail.example.com
From: Persons Name <emailname@example.com>

使Sender等于Sender: Persons Name <emailname@example.com>

您添加了 mg 子域了吗?

如果您添加了子域,例如@mg.domain.com,那么确保您从姓名@mg.domain.com[=10= 发送电子邮件]

我遇到了同样的问题,因为我没有意识到我想要发件人地址 name@domain.com 但我已经按照建议添加了 - mailgun 的子域:mg.domain.com

因此,当我尝试从 name@domain.com 发送电子邮件时,我收到了 "on behalf of" / "sent by" 但我一收到我使用了子域 name@mg.domain.com - "on behalf" 消息消失了...愚蠢的我...

添加到 Dhodgin 的回答:

如果您在 MailGun 中使用子域(例如 mail.bar.com)并且发件人电子邮件地址使用不同的域(例如 john@foo.com
),则会出现 on behalf of 消息 要解决此问题,请添加自定义 MIME header "sender" 并将其设置为与发件人电子邮件地址相同。

要使用 MailGun api 添加自定义 header,请确保添加 h: 前缀,例如:

request.AddParameter("h:sender", "John Smith <john@foo.com> ");