未找到Mailgun域:abc.com

时间:2016-05-22 14:22:04

标签: digital-ocean mailgun

我正在尝试使用自己的网站设置电子邮件。假设域名为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"
}

如何解决此问题?

7 个答案:

答案 0 :(得分:17)

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

我的域设置为欧盟区域,并且我不得不将api域设置为api.eu.mailgun.net,而不是api.mailgun.net

轰!工作! :)

答案 1 :(得分:4)

更新8/22/16: 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()

请勿忘记“收件人”字段中的括号,因为即使您只是将其发送给一位收件人,也必须是元组或列表。

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

答案 2 :(得分:4)

我在Mailgun中使用欧盟地区,我自己也遇到了这个问题。我的实现是一个Node.js NPM packagemailgun-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);
    }
});

options构造函数的另外mailgun()可以是found here

我想为仍然感到困惑的任何人提供完整的答案。此外,Mailgun支持非常友好,可以提供下表作为参考指南: enter image description here

答案 3 :(得分:1)

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

对不起,作为答复,没有足够的代表来添加评论:(

答案 4 :(得分:0)

IF

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

THEN的{​​{1}}设置(在Django项目设置中)应将ANYMAIL指定为欧盟标准,例如:

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

答案 5 :(得分:0)

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

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

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

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

答案 6 :(得分:0)

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

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