当我尝试向用户发送电子邮件验证链接时收到错误消息。我在其他项目中使用了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."
});
答案 0 :(得分:0)
我在浪费一天的调试后发现错误。我在原始问题中发布的代码没有错。用户集合的架构定义中有一个错误,我安装了另一个软件包 - jagi:astronomy。验证&#39;验证规则&#39; (电子邮件验证标志)设置为字符串。它应该是布尔值。我仍然不明白为什么会阻止发送验证邮件。电子邮件字段验证本身是正确的,并保存了电子邮但是,一旦我将验证规则更改为布尔,就会验证&#39;字段为布尔值,错误就消失了。