我想在创建某些用户时发送验证电子邮件。我使用 accounts-password 包,因此在我的代码中调用了任何 Accounts 方法。
我阅读了我需要调用的文档:
Accounts.sendVerificationEmail(userId, [email])
但问题是我不知道何时调用它。
我试图调用的回调函数,Accounts.onCreateUser(func)
但尚未在数据库中创建用户。
有任何想法吗?
我想在创建某些用户时发送验证电子邮件。我使用 accounts-password 包,因此在我的代码中调用了任何 Accounts 方法。
我阅读了我需要调用的文档:
Accounts.sendVerificationEmail(userId, [email])
但问题是我不知道何时调用它。
我试图调用的回调函数,Accounts.onCreateUser(func)
但尚未在数据库中创建用户。
有任何想法吗?
在服务器端:
Accounts.config({sendVerificationEmail: true, forbidClientAccountCreation: false});
从上面的评论中得到了答案。
sendVerificationEmail
仅在服务器端可用。我通常做的是在发送电子邮件之前使用一个setInterval
内部onCreateUser
来等待 Meteor 创建用户。
阅读更多:使用 Meteor 帐户验证电子邮件。
// (server-side)
Accounts.onCreateUser(function(options, user) {
user.profile = {};
// we wait for Meteor to create the user before sending an email
Meteor.setTimeout(function() {
Accounts.sendVerificationEmail(user._id);
}, 2 * 1000);
return user;
});
您需要在环境变量中指定邮件。然后在抱歉错误和延迟Accounts.sendVerificationEmail(userId, [email])
的回调中使用。Account.onCreateUser
像这样(下面是完整的示例 js 文件):
Template.register.events({
'submit #register-form' : function(e, t) {
e.preventDefault();
var email = t.find('#account-email').value
, password = t.find('#account-password').value;
// Trim and validate the input
Accounts.onCreateUser({email: email, password : password}, function(err){
if (err) {
// Inform the user that account creation failed
} else {
// Success. Account has been created and the user
// has logged in successfully.
Accounts.sendVerificationEmail(this.userId, email);
}
});
return false;
} });
if(Meteor.isServer){
Meteor.startup(function(){
process.env.MAIL_URL='smtp://your_mail:your_password@host:port'
}
}
我参考了这个页面: http ://blog.benmcmahen.com/post/41741539120/building-a-customized-accounts-ui-for-meteor