这里有一个很好的例子,说明了如何从命令行发送电子邮件。我的问题是我不明白依恋是如何运作的。这是示例代码:
curl -s --user 'api:YOUR_API_KEY' \
https://api.mailgun.net/v3/YOUR_DOMAIN_NAME/messages \
-F from='Excited User <YOU@YOUR_DOMAIN_NAME>' \
-F to='foo@example.com' \
-F cc='bar@example.com' \
-F bcc='baz@example.com' \
-F subject='Hello' \
-F text='Testing some Mailgun awesomness!' \
--form-string html='<html>HTML version of the body</html>' \
-F attachment=@files/cartman.jpg \
-F attachment=@files/cartman.png
Run Code Online (Sandbox Code Playgroud)
当我删除附件时,我会收到我发送的消息。但是,当我使用附件时,我无法收到它。所以我的问题是:
@files?我使用 CMS 在提交表单时发送电子邮件。其配置为使用 smtp.mailgun.org:587 和用户名 postmaster@domain.com。我使用 Google Apps 发送电子邮件,因此在本例中,我接收电子邮件的电子邮件帐户是 support@domain.com。客户填写表格并输入其电子邮件地址作为“发件人”地址,“收件人”地址为 support@domain.com。我在 Gmail 的“垃圾邮件”文件夹中没有看到任何内容。Mailgun 正在获取所有电子邮件并将它们标记为已发送/已接收,但我根本没有在 Gmail 中收到电子邮件,因此没有从我的客户那里收到支持电子邮件。是什么赋予了?
我正在尝试使用 mailgun 设置入站邮件。我想通过 support@mydomain.com 接收电子邮件。(出于隐私原因更改)
match_recipient("support@mydomain.com")动作是forward("me@gmail.com")但是,当我在现实生活中向 support@mydomain.com 发送电子邮件时,我收到失败通知。错误信息是:
Your message cannot be delivered to the following recipients:
Recipient address: support@mydomain.com
Reason: Remote SMTP server has rejected address
Diagnostic code: smtp;550 5.7.1 Relaying denied
Remote system: dns;mxb.mailgun.org (TCP|17.172.80.96|58312|52.5.239.85|25) (ak47 ESMTP ready)
Run Code Online (Sandbox Code Playgroud)
我在这里缺少哪一步?
我已经创建了 mailgun 帐户并更新了我的 VPS 服务器上的所有 mx、spf、dkim 记录。
我已经用我的 mailgun 凭据更新了我的.env和文件。config/mail.php
但是,当我从 Laravel 应用程序向 Gmail 发送电子邮件时,它每次都会进入垃圾邮件文件夹。
我尝试发送纯文本消息,其中不包含任何链接,但结果仍然相同。
这是我用来发送电子邮件的代码:
Mail::raw('Account confirmation email', function($message) use($data)
{
$message->subject('Mailgun and Laravel are awesome!');
$message->from('welcome@example.com', 'Website Name');
$message->to($data['email']);
});
Run Code Online (Sandbox Code Playgroud) 我正在开发的应用程序中使用 Mailgun。发送电子邮件工作正常,现在我正在尝试将其设置为接收传入电子邮件。
我根据 Mailgun 文档进行了设置,以便将所有内容自动转发到我常用的电子邮件地址。然后,我向 myName@myDomain.app 发送了一封测试电子邮件。(这是一个 .app 域名)。
电子邮件没有退回,但也没有到达转发地址。
以下是我在 NameCheap 上设置 MX 记录的方法:
以下是我在 Mailgun 上设置路由的方法:
我缺少什么?
我在使用 mailgun 发送电子邮件时遇到问题。与我的 mailgun 域具有相同域的电子邮件地址不会收到电子邮件(具有其他域的其他地址会收到电子邮件)。
例如,如果我的 Mailgun 域是domain.com,我无法发送到test@domain.com
在 mailgun 上的日志中,表明电子邮件已被接受(但从未发送)。
这是我的代码,但我认为这是邮件枪配置问题。
const mg = mailgun({ apiKey: process.env.MAILGUN_API_KEY, domain: process.env.MAILGUN_DOMAIN, host: process.env.MAILGUN_HOST })
const data = ...
mg.messages().send(data, function (error, body) {
if(error) {
console.log(error)
const err = new Error('Error sending email')
err.code = 500
throw err
}
})
Run Code Online (Sandbox Code Playgroud)
此查询没有任何错误,并且我认为我正确配置了 DNS 记录。
MX:
主机名| 优先 | 当前值
域名.com | 10 | 10 mxa.eu.mailgun.org
域名.com | 10 | 10 mxb.eu.mailgun.org
TXT记录也已配置
感谢您的帮助
我正在集成 mailgun API 服务来发送事务电子邮件,这是我的代码:
import mailgun from "mailgun-js"
const DOMAIN = "sandboxxxxxxxx.mailgun.org";
const mg = mailgun({apiKey: "xxxxxx-xxxxx-xxxxx", domain: DOMAIN});
const filename = path.join(__dirname, 'assets/meme.png')
const data = {
from: "Mailgun Sandbox <postmaster@sandboxxxxxxxx.mailgun.org>",
to: "xxxxx@gmail.com",
subject: "Test email",
html: '<div><img src="cd:meme.png"/><h1>Thank you for choosing Mailgun!</h1></div>',
inline: filename
};
mg.messages().send(data, function (error: any, body: any) {
if(error){console.log(error)} console.log(body);
});
Run Code Online (Sandbox Code Playgroud)
我尝试在 html 正文中发送图像,但是当我收到电子邮件时,它不会到达正文,而是作为可下载的附件到达。我还想在我的模板正文中发送多张图像。有任何想法吗 ?
感谢您提前提供的帮助
我们使用 Mailgun 进行入站电子邮件路由已经有 8 年多了,并且总是注意到大量电子邮件最终进入了我们的垃圾邮件文件夹。
与 Google 团队交谈后发现,在使用入站路由时,Mailgun 与 Gmail 根本不兼容,因为它不会“中继”电子邮件,而是会修改标头重新发送电子邮件。
这会导致所有电子邮件都无法通过 SPF!这意味着您的某些(通常是大部分)电子邮件将无缘无故地进入垃圾邮件文件夹。
来自谷歌:
“我们发现 Mailgun 正在重新发送这些电子邮件,而 Google 则希望这些电子邮件能够被转发。重新发送电子邮件会导致 SMTP 发件人更改为[已编辑]。然后会检查 SPF 是否为[已编辑] ]. 入站网关指示忽略 Mailgun 的 IP 地址,因此将使用前一个地址。这将导致所有电子邮件都无法通过 SPF。
在这种情况下,建议联系 Mailgun 并询问他们是否有办法转发这些电子邮件,这样 SMTP 发件人就不会改变。”
邮枪回应:
“不幸的是,我们无法采取太多措施来防止这种情况发生,因为这就是我们路线的运作方式”
有什么解决办法吗?
有人设法解决这个问题吗?
或者有人有一个功能齐全的推荐替代品来替代 Mailgun Routes 吗?
我正在使用 Mailgun 从 Python 向我的用户发送邮件。除了 1 个问题外,一切正常。当用户收到电子邮件时,它不会显示预期的发件人姓名,而是显示我用来发送电子邮件的电子邮件。
这是一个例子。在此示例中,我使用 email 向我的用户发送电子邮件support@mydomain.com。如果我使用 Python 中的 Mailgun 发送邮件,他们会在收件箱中看到以下内容
但是,如果我support@mydomain.com使用 Gmail 而不是 Mailgun 手动向用户发送电子邮件,则图片中的单词support将替换为我设置的正确名称,即Kevin from Mydomain.com。我的问题是如何配置 Mailgun,以便从 Mailgun 发送的电子邮件也显示正确的发件人姓名,而不是我用来发送电子邮件的电子邮件的第一部分(在本例中,第一部分是support@mydomain.com)support。