为什么我的电子邮件似乎没有与Meteor的电子邮件包一起发送?

时间:2015-11-02 22:01:28

标签: email meteor

我有一个 Meteor 应用程序,我正在使用email package。我已经在使用帐户(account-ui和帐户密码),并且最近使用gmail帐户设置了process.env.MAIL_URL变量,测试了"重置密码"功能并收到了一封电子邮件。

我当时正在尝试编写代码来接收电子邮件(用户只需点击按钮)基本上可以看到这项工作,但我没有看到电子邮件"已记录"在我的控制台中本地运行流星。

如果我这样做

 if(Meteor.isServer){
     Email.send({
      to: "to.address@email.com",
      from: "from.address@email.com",
      subject: "Example Email",
      text: "Text of the email."
    });
 })

我看到一个控制台消息

consolemessage

(如果点击&#34,我会得到同样的结果;重置密码"使用帐户包功能)

但是,根据文档说明,我在调用自己的代码时看不到这条消息,这很简单。

我在/ server下有一个 serverMethods.js 文件,其中有

Meteor.methods({
  sendEmail: function (text) {

    check([text], [String]);

    this.unblock();
    Email.send({
      to: "to.address@email.com",
      from: "from.address@email.com",
      subject: "Example Email",
      text: text
    });
});

然后在客户端我调用

Template.NavBar.events({
"click #testEmail" :function(event){
     event.preventDefault();
      Meteor.call('sendEmail', 'dataText');
  }
});

testEmail我的navBar模板中一项的ID)。点击后,如果我是console.log,我可以看到正在处理我的流星呼叫,但是我没有在控制台中看到与发送电子邮件相同的消息。

我缺少的东西必须非常简单明了,因为文档中解释了这个功能的简单性,而且我发现的关于该主题的大多数教程基本上都是做同样的事情。尽管如此,我还是不明白为什么我没有看到我的控制台中记录的电子邮件,因为它发生在帐户功能中,或者我自己从服务器端调用Email.send

2 个答案:

答案 0 :(得分:0)

也许这只是一个错字,但请确保您将环境变量“MAIL_URL”设置为“MAIL_UR”。

我发现从设置文件中动态设置它更容易(仅在服务器端):

Meteor.startup(function() {
    process.env.MAIL_URL = 'smtp://' + Meteor.settings.private.mail.username + ':' + Meteor.settings.private.mail.password + '@' + Meteor.settings.private.mail.smtpServer + '/';
});

答案 1 :(得分:0)

嗯,这毕竟是愚蠢的。如果您有process.env.MAIL_URL,则不会看到“未发送邮件;要启用发送,请设置MAIL_URL环境变量”。控制台中记录的消息。仅当您没有设置变量时才会显示。

我的问题是我有变量集,但我对用于测试的“到”电子邮件地址不够谨慎。我没有将电子邮件发送到正确的帐户,因此我没有看到任何电子邮件被发送,也没有在控制台上发送任何“假”电子邮件。

所以基本上,process.env.MAIL_URL我只需要改变

Email.send({
  to: "to.address@email.com", <--- Real address here
  from: "from.address@email.com",
  subject: "Example Email",
  text: text
});

发送电子邮件或删除process.env.MAIL_URL以使用垃圾邮件用户对其进行测试。