Meteor部署 - 未设置MAIL_URL

时间:2013-12-02 20:35:44

标签: meteor

我最近开始从本地计算机部署流星应用程序,并且在部署到* .meteor.com域时似乎没有设置MAIL_URL属性。无论我尝试过什么,都会通过默认的MailGun发送电子邮件

到目前为止我的尝试。

  1. 已验证process.MAIL_URL已设置并在本地运行 - 确保 我正在正确设置MAIL_URL
  2. 已验证process.MAIL_URL 通过检查流星日志在* .meteor.com域上设置 - 确保 process.env设置正在* .meteor.com上设置
  3. 尝试了多个* .meteor.com域名 - 确保它不是特定于子域​​名的 问题
  4. 尝试了多个smtp提供程序:gmail和Mandrill - 确保 这不是smtp提供商的问题
  5. 尝试使用简单的测试电子邮件按钮创建一个简单的应用程序 - 确保问题不是 与我的应用代码相关
  6. 没有任何作用。使用简单的应用程序,我的代码如下:

    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);
      });
    }
    

    此时我没有想法。有没有其他人经历过这个,决议是什么?感谢。

1 个答案:

答案 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服务器。要做到这一点:

  1. https://github.com/meteor/meteor/tree/devel/packages/email获取文件并将其放在项目/packages/email的目录中。

  2. 使用meteor add email将此包添加到您的meteor项目中。它应该覆盖默认的meteor-core包。如果说已经使用了,那没关系。

  3. line 36周围的/packages/email/email.js修改为:

    var smtpPool = makePool("<YOUR CUSTOM MAIL_URL>");

  4. 然后你应该好好去。 Meteor应该使用这个smtp主机,即使在meteor.com托管上也是如此。