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

我正在使用这个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文件中.

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

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

编辑 – 我让它工作,但我不知道为什么我这样做:

我注意到通过一些控制台记录,尽管在Meteor.startup()中设置了环境变量,但是在设置环境变量之前,电子邮件试图被拍摄掉.

我最终做的是在server / lib中创建一个mailer_variable.js文件

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包的作者说我应该做的……

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

设置这个的正确方法是在Linux / Mac上启动Meteor,如下所示:

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

要么

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

更多细节记录在这里:http://meteorpedia.com/read/Environment_Variables

点赞