web-dev-qa-db-ja.com

Mailgunドメインが見つかりません:abc.com

自分のウェブサイトでメールをセットアップしようとしています。ドメイン名がabc.comであるとしましょう。

使用中のネームサーバーはDigital Oceanで、それにリンクされている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"
}

この問題を解決するにはどうすればよいですか?

21
sudshekhar

更新8/22/16:Anymailは、settings.pyで新しいMAILGUN_SENDER_DOMAINを取得するように更新されました。バージョン.5+のドキュメントを参照してください。

-元の回答メールの送信方法のコードを投稿していませんが、おそらく単純な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フィールドの括弧は、1つの受信者にのみ送信する場合でもタプルまたはリストである必要があるため、忘れないでください。

詳細については、Anymailのドキュメント esp_extra を参照してください。

5
Rob

Mailgunヘルプページからcurlの例をコピーして貼り付けたときにも同じエラーが発生しました。

私のドメインはEU地域に設定されており、APIドメインをapi.eu.mailgun.netではなくapi.mailgun.netに設定する必要がありました。

ブーム!ワーキング! :)

66
wiktor

私はMailgunでEU地域を使用しており、この問題に自分で遭遇しました。私の実装は_Node.js_ NPMパッケージ を含む_mailgun-js_アプリケーションです。

EU地域の実装:

_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);
    }
});
_

さらにmailgun()コンストラクターのoptionsここにあります

まだ混乱している人のために私は完全な答えを共有すると思いました。さらに、Mailgun Supportは、次の表をリファレンスガイドとして提供できるほど親切でした: enter image description here

31
ProGrammer

IF

  • ドメインがEUドメインであり、かつ
  • 上記のロブの answer のようにDjango-anymailを使用している

THENANYMAIL設定(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"
}

正しいDNS設定で何日も苦労し、@ wiktorが言ったように最終的に見つかりました。それを機能させるには、APIエンドポイントに「eu」を追加する必要がありました。実際には、ここにも記載されています: https://documentation.mailgun.com/en/latest/api-intro.html#mailgun-regions

回答として返信して申し訳ありません。コメントを追加するのに十分な担当者がいません:(

1
Kasper K

私はこの変更で私の修正を見つけました:

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

同じ問題がありました:404エラー、ドメインが見つかりません。

原因 MailgunのドメインのEU地域の選択

ソリューション地域をEUからデフォルトのUSに戻します。

ここまではドメインをまったく使用していなかったので、ドメインを削除して再度追加し、TXT、MX、およびCNAMEレコード(たとえば、eu.mailgun.orgではなくmailgun.org)を変更しました。ドメインレジストラー(私の場合はGoDaddy)。

0
Darren Murphy