未找到 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的主要内容,如果未能解决你的问题,请参考以下文章
AWS Elastic Beanstalk 和 Route 53 域链接 - “未找到 DNS”
Wildfly 安全子系统:从 Legacy 迁移到 Elytron,未找到安全域
错误域=com.alamofire.error.serialization.response Code=-1011 “请求失败:未找到 (404)”