Домен 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"
}

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

Ответ 1

Обновление 8/22/16: Обновлен параметр "Anymail", чтобы получить новый файл MAILGUN_SENDER_DOMAIN в settings.py. См. Версию .5+ docs.

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

from django.core.mail import send_mail

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

Когда вы используете этот метод, Anymail вытаскивает домен из вашего адреса From и пытается использовать его с Mailgun. Поскольку ваш адрес From (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()

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

Для получения дополнительной информации см. Документы Anymail в esp_extra.

Ответ 2

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

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

Boom! За работой! :)

Ответ 3

Я использую регион ЕС с Mailgun и столкнулся с этой проблемой самостоятельно. Моя реализация - приложение Node.js с mailgun-js NPM mailgun-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 <[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 любезно предоставила следующую таблицу в качестве справочного руководства: enter image description here

Ответ 4

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

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

Ответ 5

IF:

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

THEN настройка ANYMAIL (в настройках вашего проекта Django) должна указывать API_URL для EU, например:

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"
}