我正在尝试为用户设置电子邮件验证。我正在使用useraccounts:core
的{{1}},我的服务器上有以下内容
enforceEmailVerification
当我尝试以用户身份注册时,我收到以下服务器错误
Accounts.onCreateUser(function(options, user) {
var userId = user._id;
Accounts.sendVerificationEmail(userId);
if(options.profile.invite){
Invites.remove({_id: options.profile.invite});
}
user.profile = options.profile
return user;
});
答案 0 :(得分:2)
我也遇到了这个问题并根据这个问题:https://github.com/alanning/meteor-roles/issues/35#issuecomment-40674250,
将Accounts.sendVerificationEmail(userId);
置于Accounts.onCreateUser
内并不是一个好主意,因为用户尚未“存在”。
如果您正在使用某种方法,则可以在创建用户时返回用户ID,然后再发送电子邮件,如下所示:
var userID = Accounts.createUser(options, callback);
Accounts.sendVerificationEmail(userID);
答案 1 :(得分:1)
您需要将sendVerificationEmail放在Accounts.createUser中并设置超时
Accounts.onCreateUser(function(options, user) {
// we wait for Meteor to create the user before sending an email
Meteor.setTimeout(function() {
Accounts.sendVerificationEmail(user._id);
}, 2 * 1000);
return user;
});