Домен Mailgun не найден: abc.com

Я пытаюсь настроить электронную почту на своем собственном веб-сайте. Допустим, доменное имя abc.com.

Используемый сервер имен - это цифровой океан, и у меня также есть учетная запись Gmail, связанная с ним (скажем, с помощью [email protected]).

При настройке с помощью mailgun я использовал mg.abc.com (по их словам, это также позволит мне отправлять электронную почту с использованием корневого домена). Этап проверки завершен, и я могу отправлять электронную почту, используя [email protected].

Однако попытка использовать корневой домен ([email protected]) дает следующую ошибку:

AnymailRequestsAPIError: Sending a message to [email protected] from [email protected]
ESP API response 404:
{
"message": "Domain not found: abc.com"
}

Как мне решить эту проблему?


person sudshekhar    schedule 22.05.2016    source источник


Ответы (7)


Обновление 22.08.16: Anymail был обновлен и теперь принимает новый MAILGUN_SENDER_DOMAIN в settings.py. См. Документы версии .5+.

- Исходный ответ. Вы не разместили свой код того, как вы отправляете электронную почту, но вы, вероятно, пытаетесь отправить, используя простую функцию send_mail ():

from django.core.mail import send_mail

send_mail("Subject", "text body", "[email protected]",
          ["[email protected]"],)

Когда вы используете этот метод, Anymail извлекает домен из вашего адреса «От» и пытается использовать его с Mailgun. Поскольку ваш адрес отправителя (abc.com) не включает поддомен mg., Mailgun сбит с толку.

Вместо этого вам нужно отправить электронное письмо с помощью объекта EmailMultiAlternatives и указать домен отправителя электронной почты следующим образом:

from django.core.mail import EmailMultiAlternatives

msg = EmailMultiAlternatives("Subject", "text body",
                             "[email protected]", ["[email protected]"])
msg.esp_extra = {"sender_domain": "mg.abc.com"}

msg.send()

Не забудьте скобки в поле «Кому», так как это должен быть кортеж или список, даже если вы отправляете его только одному получателю.

Дополнительную информацию см. В документации Anymail на странице esp_extra.

person Rob    schedule 27.06.2016
comment
Обратите внимание, что в AnyMail добавляется новый параметр, который упрощает задачу. См. Комментарии в этой проблеме. - person Rob; 04.08.2016

Я получил ту же ошибку, когда скопировал пример curl со страницы справки Mailgun.

Мой домен был установлен в регион ЕС, и мне пришлось установить для домена api значение api.eu.mailgun.net вместо api.mailgun.net.

Бум! Работающий! :)

person wiktor    schedule 28.09.2018
comment
Вы абсолютная легенда! Ничего подобного не видно. - person Nick; 20.03.2019
comment
Спасибо! Где вы нашли к нему документацию? - person eighilaza; 13.04.2019
comment
Спасибо! Пример curl в их документах также включает несколько полей to. - person Stuck; 07.05.2019
comment
Я должен тебе пинту - person Mel Macaluso; 24.07.2019
comment
Сегодня такая же ситуация. Прошел почти год, а генератор примеров так и не обновили. - person Nikita Petrov; 22.08.2019
comment
Спасатель жизни ответ! - person Ajay Makwana; 04.03.2020
comment
Спаси мой день. Много - person Abner; 30.04.2020
comment
Мне показалось, что это так, но теперь в руководстве показаны mxa.eu.mailgun.org и mxb.eu.mailgun.org. вместо api.mailgun.net, и мне интересно, каково теперь правильное поведение, устарел ли ваш домен api? - person Dimitri Kopriwa; 07.05.2020
comment
Вы самые лучшие! - person highlytrainedbadger; 04.03.2021

Я использую регион ЕС с Mailgun и сам столкнулся с этой проблемой. Моя реализация - это Node.js приложение с mailgun-js пакетом NPM.

Реализация в регионе ЕС:

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 <[email protected]>",
    to: "[email protected]",
    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() конструктора можно найти здесь.

Думал, что поделюсь полным ответом для всех, кто все еще не понимает. Кроме того, служба поддержки Mailgun любезно предоставила следующую таблицу в качестве справочного руководства:  введите описание изображения здесь

person ProGrammer    schedule 09.07.2019
comment
Спасибо тебе за это. Я выдергивал волосы, пытаясь понять, почему это не работает. Добавление свойства host исправило это для меня. - person henk.io; 11.07.2019
comment
Спасибо, потратил дни на поиск ответа - person Jean Eric; 19.07.2019
comment
Mailglum передает свою техническую поддержку на аутсорсинг: по техническим вопросам мы рекомендуем обращаться к сообществу через Stack Overflow. - person Nik K; 11.10.2019
comment
Абсолютная легенда, на то, чтобы найти это, потребовалось около часа, но все проблемы были решены в одной строчке кода (тот факт, что доменам EU требуется свойство host в конфигурации, не очевиден!) - person Goddak; 10.11.2019
comment
Спасибо! Тот же опыт здесь: не осознавал, что свойство host по умолчанию относится к домену США, поэтому я получал домен не найден ', пока я не добавил его вместе с хостом mailgun EU. - person cloudworks; 07.12.2019
comment
Наконец: ключ host !! - Спасибо! Всегда полезно прочитать документацию по пакету. Это сэкономило бы мне часы! - person Kossi D. T. S.; 18.12.2019
comment
Спасибо, на месте, мою проблему тоже исправили. - person kierandes; 04.02.2020
comment
Легенда, ты только что сэкономил мне много времени и разочарований! - person Abdul Maye; 17.04.2020
comment
Спасибо! Я тянул за волосы на этом. Добавление хоста решило проблему. - person Patrik Melander; 06.08.2020

IF:

  • ваш домен является доменом ЕС И
  • вы используете django-anymail, как в ответе Роба выше

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 [email protected] from [email protected] <[email protected]>
Mailgun API response 404 (NOT FOUND):
{
  "message": "Domain not found: mailgun.abc.eu"
}
person Joseph Victor Zammit    schedule 14.07.2019

В течение нескольких дней боролся с правильными настройками DNS и, наконец, нашел, как сказал @wiktor, мне нужно было добавить «eu» в конечную точку api, чтобы она работала. Фактически это также задокументировано здесь: https://documentation.mailgun.com/en/latest/api-intro.html#mailgun-regions

Извините за ответ, у меня недостаточно репутации, чтобы добавить комментарий :(

person Kasper K    schedule 04.06.2019

У меня была такая же проблема: ошибка 404, домен не найден.

Причина. Выбор региона ЕС для домена на Mailgun.

Решение Измените регион с ЕС на США по умолчанию.

Поскольку до этого момента я вообще не использовал домен, я просто удалил его, повторно добавил, а затем изменил свои записи TXT, MX и CNAME (например, mailgun.org вместо eu.mailgun.org) на регистратор доменов (в моем случае это GoDaddy).

person Darren Murphy    schedule 30.01.2020

Я нашел свое исправление с этим изменением:

ANYMAIL = {
   ...
   'MAILGUN_SENDER_DOMAIN': 'mydomain.com', # Using the sending domain in Mailgun
}
person James Broad    schedule 07.02.2020