获取错误:“没有用户的此类电子邮件地址。”在meteor中调用Accounts.sendVerificationEmail(userId)时

时间:2016-03-29 23:45:41

标签: meteor

当我尝试向用户发送电子邮件验证链接时收到错误消息。我在其他项目中使用了Meteor的电子邮件功能,没有任何问题。但是在当前的项目中,我收到了这个错误,我不知道是什么原因造成的。

  

user.emails [0] .address确实有一个电子邮件地址   调用方法'sendVerificationLink'时出现异常错误:用户没有此类电子邮件地址   在AccountsServer.Accounts.sendVerificationEmail(packages / accounts password / password_server.js:745:11)
  at [object Object] .sendVerificationLink(server / user / users_methods.js:25:23)

我正在使用 METEOR@1.3-beta.11 ,我的代码如下:

**Client:**

let user = { email: signupEmail,password: password }

 Accounts.createUser(user, (err) => {
     if(!err) {         
         Meteor.call('sendVerificationLink');
     }
 })

**Server:**

Meteor.startup(function () {
process.env.MAIL_URL = 'smtp://postmaster%40sandboxd9...7.mailgun.org:<pwrd>@smtp.mailgun.org:587';
});

...

Meteor.methods({
  sendVerificationLink() {
    let userId = Meteor.userId();
    if ( userId ) {
      return Accounts.sendVerificationEmail( userId );
    }
  }
});

process.env.MAIL_URL和mailgun设置正确。我使用以下服务器代码从服务器测试了它,并且电子邮件已正确传送。

Email.send({
  to: "xxxxx@gmail.com",
  from: "xxxxx@gmail.com",
  subject: "Example Email",
  text: "This is a test email."
});

1 个答案:

答案 0 :(得分:0)

我在浪费一天的调试后发现错误。我在原始问题中发布的代码没有错。用户集合的架构定义中有一个错误,我安装了另一个软件包 - jagi:astronomy。验证&#39;验证规则&#39; (电子邮件验证标志)设置为字符串。它应该是布尔值。我仍然不明白为什么会阻止发送验证邮件。电子邮件字段验证本身是正确的,并保存了电子邮但是,一旦我将验证规则更改为布尔,就会验证&#39;字段为布尔值,错误就消失了。