未找到 Mailgun 域:abc.com

Posted

技术标签:

【中文标题】未找到 Mailgun 域:abc.com【英文标题】:Mailgun Domain not found: abc.com 【发布时间】:2016-09-19 10:07:01 【问题描述】:

我正在尝试使用我自己的网站设置电子邮件。假设域名是abc.com

使用的域名服务器是数字海洋,我也有一个 gmail 帐户与之关联(比如使用contact@abc.com)。

在使用 mailgun 进行设置时,我使用了 mg.abc.com(因为他们说它也可以让我使用根域发送电子邮件)。验证步骤已完成,我可以使用contact@mg.abc.com 发送电子邮件。

但是,尝试使用根域 (contact@abc.com) 会出现以下错误:

AnymailRequestsAPIError: Sending a message to me@gmail.com from contact@abc.com
ESP API response 404:

"message": "Domain not found: abc.com"

我该如何解决这个问题?

【问题讨论】:

【参考方案1】:

当我从 Mailgun 帮助页面复制粘贴 curl 示例时,我遇到了同样的错误。

我的域设置为欧盟地区,我必须将 api 域设置为 api.eu.mailgun.net 而不是 api.mailgun.net

轰隆隆!在职的! :)

【讨论】:

你绝对的传奇!无法在任何地方看到此文档。 谢谢!你在哪里找到它的文档? 谢谢!他们文档的 curl 示例还包括多个 to 字段。 我欠你一品脱 今天也遇到了同样的情况。快一年过去了,他们仍然没有更新示例生成器。【参考方案2】:

我在欧盟地区使用 Mailgun,我自己也遇到了这个问题。我的实现是一个带有mailgun-js NPM package 的Node.js 应用程序。

欧盟地区实施:

const mailgun = require("mailgun-js");
const API_KEY = "MY_API_KEY";   // Add your API key here
const DOMAIN = "my-domain.com"; // Add your domain here
const mg = mailgun(
    apiKey: API_KEY,
    domain: DOMAIN,
    host: "api.eu.mailgun.net"  // -> Add this line for EU region domains
);
const data = 
    from: "Support <support@my-domain.com>",
    to: "recipient@example.com",
    subject: "Hello",
    text: "Testing some Mailgun awesomness!"
;
mg.messages().send(data, function(error, body) 
    if (error) 
        console.log(error);
     else 
        console.log(body);
    
);

mailgun() 构造函数的进一步options 可以是found here。

我想我会为仍然感到困惑的任何人分享一个完整的答案。此外,Mailgun Support 提供了下表作为参考指南:

【讨论】:

谢谢你。我正在拔头发,试图弄清楚为什么这不起作用。添加 host 属性为我修复了它。 感谢您花了几天的时间寻找答案 Mailglum 正在将他们的技术支持外包给大众:“对于技术问题,我们建议在 Stack Overflow 上向社区提问。” 绝对的传说,花了大约一个小时才找到这个,但在一行代码中解决了所有 hy 问题(欧盟域需要配置中的主机属性这一事实并不明显!) 谢谢!同样的经历:没有意识到 host 属性默认为美国域,所以我得到“未找到域”,直到我将它与欧盟 mailgun 主机一起添加。【参考方案3】:

IF:

您的域是欧盟域并且 您正在使用 django-anymail,就像上面 Rob 的 answer 一样

THEN ANYMAIL 设置(在您的 Django 项目设置中)应将 API_URL 指定为欧盟之一,例如:

ANYMAIL = 
    'MAILGUN_API_KEY': '<MAILGUN_API_KEY>',
    'MAILGUN_SENDER_DOMAIN': 'abc.eu',
    'MAILGUN_API_URL': 'https://api.eu.mailgun.net/v3'  # this line saved me!

在添加 MAILGUN_API_URL 之前,我收到了这个错误:

AnymailRequestsAPIError: Sending a message to xxx@yyy.com from noreply@abc.eu <noreply@abc.eu>
Mailgun API response 404 (NOT FOUND):

  "message": "Domain not found: mailgun.abc.eu"

【讨论】:

【参考方案4】:

2016 年 8 月 22 日更新: Anymail 已更新为在 settings.py 中采用新的 MAILGUN_SENDER_DOMAIN。请参阅 .5+ 版文档。

-- 原答案 您没有发布有关如何发送电子邮件的代码,但您可能正在尝试使用简单的 send_mail() 函数进行发送:

from django.core.mail import send_mail

send_mail("Subject", "text body", "contact@abc.com",
          ["to@example.com"],)

当您使用此方法时,Anymail 会从您的发件人地址中提取域并尝试将其与 Mailgun 一起使用。由于您的发件人地址 (abc.com) 不包含子域 mg.,因此 Mailgun 很困惑。

相反,您需要使用EmailMultiAlternatives 对象发送电子邮件并指定电子邮件发件人域,如下所示:

from django.core.mail import EmailMultiAlternatives

msg = EmailMultiAlternatives("Subject", "text body",
                             "contact@abc.com", ["to@example.com"])
msg.esp_extra = "sender_domain": "mg.abc.com"

msg.send()

不要忘记 To 字段中的括号,因为即使您只是将它发送给一个收件人,它也必须是一个元组或列表。

有关详细信息,请参阅 esp_extra 上的 Anymail 文档。

【讨论】:

请注意,AnyMail 中添加了一项新设置,使这更加简单明了。请参阅this issue 中的 cmets。【参考方案5】:

在正确的 DNS 设置上苦苦挣扎了好几天,最后发现正如@wiktor 所说,我需要将“eu”添加到 api 端点以使其工作。它实际上也记录在这里:https://documentation.mailgun.com/en/latest/api-intro.html#mailgun-regions

抱歉回复为答案,没有足够的代表添加评论:(

【讨论】:

【参考方案6】:

我遇到了同样的问题:404 错误,找不到域。

原因 Mailgun 上域的欧盟区域选择

解决方案 将地区从欧盟更改回默认的美国。

由于到目前为止我根本没有使用过该域,我只是将其删除,重新添加,然后更改了我的 TXT、MX 和 CNAME 记录(例如,mailgun.org 而不是 eu.mailgun.org ) 在域名注册商(在我的例子中是 GoDaddy)。

【讨论】:

【参考方案7】:

我找到了解决此更改的方法:

ANYMAIL = 
   ...
   'MAILGUN_SENDER_DOMAIN': 'mydomain.com', # Using the sending domain in Mailgun

【讨论】:

以上是关于未找到 Mailgun 域:abc.com的主要内容,如果未能解决你的问题,请参考以下文章

无法在 Plesk 中打开网络邮件(未找到域)

AWS Elastic Beanstalk 和 Route 53 域链接 - “未找到 DNS”

Wildfly 安全子系统:从 Legacy 迁移到 Elytron,未找到安全域

错误域=com.alamofire.error.serialization.response Code=-1011 “请求失败:未找到 (404)”

Parse Server 中的 mailgun 模块(不是适配器)

邮件发送到.herokuapp.com域