Meteor表示没有设置MAIL_URL变量,但确实如此

时间:2015-04-24 05:20:37

标签: meteor mandrill

我正在使用这个Mandrill包:

https://atmospherejs.com/wylio/mandrill

当我尝试发送电子邮件时,我收到此错误:

I20150423-22:09:09.078(-7)? ====== BEGIN MAIL #0 ======
I20150423-22:09:09.078(-7)? (Mail not sent; to enable sending, set the MAIL_URL environment variable.)
I20150423-22:09:09.079(-7)? MIME-Version: 1.0
I20150423-22:09:09.079(-7)? From: admin@example.com
I20150423-22:09:09.079(-7)? To: victor@example.com
I20150423-22:09:09.079(-7)? Subject: Something something
I20150423-22:09:09.079(-7)? Content-Type: text/html; charset=utf-8
I20150423-22:09:09.079(-7)? Content-Transfer-Encoding: quoted-printable
I20150423-22:09:09.079(-7)? 
I20150423-22:09:09.079(-7)? Some kind of message content.
I20150423-22:09:09.079(-7)? ====== END MAIL #0 ======

所以我进入流星壳,我明白了:

> process.env.MAIL_URL
'smtp://MY_MANDRILL_EMAIL:MY_MANDRILL_API_KEY@smtp.mandrillapp.com:587/'

呃,所以正在设置MAIL_URL变量....

为了确定,我将其放在mailer.js文件夹下的server文件中。

Meteor.startup(function () {
  process.env.MAIL_URL = 'smtp://MY_MANDRILL_EMAIL:MY_MANDRILL_API_KEY@smtp.mandrillapp.com:587/';
});

发生同样的错误。这只是在localhost中运行所有内容。

编辑 - 我让它运转了,但我不知道为什么我这样做:

我注意到,通过一些控制台记录,尽管在Meteor.startup()

内设置了环境变量,但在设置环境变量之前,电子邮件仍试图被拍摄

我最终做的是在mailer_variable.js

中创建server/lib文件
process.env.MAIL_URL = 'smtp://MY_MANDRILL_EMAIL:MY_MANDRILL_API_KEY@smtp.mandrillapp.com:587';
console.log('this is the mail_url: ', process.env.MAIL_URL);

这很有效。但我不确定为什么。这当然不是Mandrill包的作者所说的我应该做的......

1 个答案:

答案 0 :(得分:2)

我认为这与load order of Meteor有关。出于这个原因,我不建议在启动脚本中精确设置环境变量。

在Linux / Mac上设置这个的正确方法就是像这样启动Meteor:

MAIL_URL="smtp://.../" meteor

export MAIL_URL="smtp://.../"
meteor

此处记录了更多详细信息:http://meteorpedia.com/read/Environment_Variables