我最近开始从本地计算机部署流星应用程序,并且在部署到* .meteor.com域时似乎没有设置MAIL_URL属性。无论我尝试过什么,都会通过默认的MailGun发送电子邮件
到目前为止我的尝试。
没有任何作用。使用简单的应用程序,我的代码如下:
if (Meteor.isClient) {
Template.hello.greeting = function () {
return "Welcome to testmail.";
};
Template.hello.events({
'click input' : function () {
console.log("calling send mail");
Meteor.call('sendEmail',
'xxx@gmail.com',
'xxx@domain.com',
'Hello from Meteor!',
'This is a test of Email.send.');
}
});
}
if (Meteor.isServer) {
// In your server code: define a method that the client can call
Meteor.methods({
sendEmail: function (to, from, subject, text) {
check([to, from, subject, text], [String]);
// Let other method calls from the same client start running,
// without waiting for the email sending to complete.
this.unblock();
Email.send({
to: to,
from: from,
subject: subject,
text: text
});
}
});
Meteor.startup(function () {
// code to run on server at startup
process.env.MAIL_URL = 'smtp://blahblah:token@smtp.mandrillapp.com:587/';
console.log(process.env);
});
}
此时我没有想法。有没有其他人经历过这个,决议是什么?感谢。
答案 0 :(得分:4)
默认情况下,meteor deploy只能使用mailgun,因为您无法改变meteor部署托管上的环境变量。此外,meteor部署托管使用galaxy配置,该配置优先于环境变量。
如果你看一下[this file],meteor部署托管使用某种App配置来配置环境变量(参见https://github.com/meteor/meteor/blob/devel/packages/email/email.js#L42)。这是Galaxy配置引擎的一部分。
您必须修改电子邮件包才能使用自定义smtp服务器。要做到这一点:
从https://github.com/meteor/meteor/tree/devel/packages/email获取文件并将其放在项目/packages/email
的目录中。
使用meteor add email
将此包添加到您的meteor项目中。它应该覆盖默认的meteor-core包。如果说已经使用了,那没关系。
将line 36周围的/packages/email/email.js修改为:
var smtpPool = makePool("<YOUR CUSTOM MAIL_URL>");
然后你应该好好去。 Meteor应该使用这个smtp主机,即使在meteor.com托管上也是如此。