我正在使用这个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