我正在使用这个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包的作者所说的我应该做的......
答案 0 :(得分:2)
我认为这与load order of Meteor有关。出于这个原因,我不建议在启动脚本中精确设置环境变量。
在Linux / Mac上设置这个的正确方法就是像这样启动Meteor:
MAIL_URL="smtp://.../" meteor
或
export MAIL_URL="smtp://.../"
meteor
此处记录了更多详细信息:http://meteorpedia.com/read/Environment_Variables