我正在尝试点击mailgun的webhook并在meteorjs中接收数据.我正在处理这个事件Router,但是在bounced活动期间,我什么都没发现req.body.
以下是我的代码:
Router.route('/api/v1/mailgun/hooks',{ where: 'server' })
.post(function() {
Router.onBeforeAction(Iron.Router.bodyParser.urlencoded({
extended: false
}));
this.response.setHeader('access-control-allow-origin', 'mailgun.com');
var req = this.request;
var res = this.response;
var values = req;
res.end('Well this is the end');
// console.log('The event is ', values);
var campaignId, campaignId1, recipient, message_id, timestamp, domain, city, client_name, client_os, client_type,
country, device_type, user_agent, ip_address, url = '',event;
if (values.event == 'delivered') {
//Key Values
domain = values['domain'];
event = values['event'];
t_camp = values['X-Mailgun-Tag'];
campaignId = t_camp.split(":")[1]; …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用Mailgun
'driver' => env('MAIL_DRIVER', 'mailgun'),
'host' => env('MAIL_HOST', 'smtp.mailgun.org'),
'port' => env('MAIL_PORT', 587),
MAILGUN_DOMAIN=xxxxxxxxxx,
MAILGUN_SECRET=xxxxxxxxxx,
MAIL_DRIVER=smtp
MAIL_HOST=smtp.mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null
Run Code Online (Sandbox Code Playgroud)
这个错误很奇怪.为什么要尝试连接到Gmail?
Connection could not be established with host smtp.gmail.com [Connection timed out #110]
Run Code Online (Sandbox Code Playgroud)
编辑:
Now I am getting
"mail" => array:9 [?
"driver" => "smtp"
"host" => "smtp.mailgun.org"
"port" => "2525"
"from" => array:2 [?]
"encryption" => null
"username" => null
"password" => null
"sendmail" => "/usr/sbin/sendmail -bs"
"markdown" => array:2 [?
"theme" => "default"
Run Code Online (Sandbox Code Playgroud) 我正在使用Laravel 4 Mail::queue()通过内置的Mailgun驱动程序发送电子邮件。问题是我希望能够从多个Mailgun域发送电子邮件,但是必须在中设置该域app/config/services.php。由于正在使用Mail::queue(),所以我看不到如何动态设置该配置变量。
有什么办法可以满足我的要求吗?理想情况下,我希望能够在调用时传递域Mail::queue()(Mailgun api密钥对于我要从中发送的所有域都是相同的)。
我正在尝试使用 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)
我在这里缺少哪一步?
我正在使用 PHP 和 Mailgun API 制作电子邮件订阅表格,但我只收到电子邮件到我在 mailgun.com 上用于创建帐户的主要电子邮件地址。当我用该电子邮件填写表格时,我会收到确认信,但它不适用于其他电子邮件。为什么会这样?这是代码:
初始化文件:
<?php
require_once 'vendor/autoload.php';
define('MAILGUN_KEY', 'key-2ce40f5e23c90b0d666f3e....');
define('MAILGUN_PUBKEY', 'pubkey-8cf7125996....');
define('MAILGUN_DOMAIN', 'sandboxc03eaee7674c4a9094ffa8d61845ddf5.mailgun.org');
define('MAILING_LIST', 'audimas@sandboxc03eaee7674c4a9094ffa8d61845ddf5.mailgun.org');
define('MAILGUN_SECRET', '...');
$mailgun = new Mailgun\Mailgun(MAILGUN_KEY);
$mailgunValidate = new Mailgun\Mailgun(MAILGUN_PUBKEY);
$mailgunOptIn = $mailgun->OptInHandler();
?>
Run Code Online (Sandbox Code Playgroud)
主 index.php 文件:
<?php
require_once 'init.php';
if(isset($_POST['name'], $_POST['email']))
{
$name = $_POST['name'];
$email = $_POST['email'];
$validate = $mailgunValidate->get('address/validate', [
'address' => $email
])->http_response_body;
if($validate->is_valid)
{
$hash = $mailgunOptIn->generateHash(MAILING_LIST, MAILGUN_SECRET, $email);
$mailgun->sendMessage(MAILGUN_DOMAIN, [
'from' => 'noreply@audimas.com',
'to' => $email,
'subject' => 'Please confirm your subscription to us', …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 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。