Accounts.createUser在Meteor.methods中使用时不发送验证电子邮件

时间:2015-12-02 07:53:49

标签: javascript meteor meteor-accounts meteor-helper

我有一个基本的流星方法,可以执行以下操作

服务器/ methods.js

Meteor.methods({
  createUserAccount: function(user) {
    return Accounts.createUser(user);
    }
});

服务器/ init.js

Meteor.startup(function() {
    process.env.MAIL_URL = ""//removed for SO;

    Accounts.config({
        sendVerificationEmail:true,
        forbidClientAccountCreation: true 
    });
)};
来自客户端的

就像这样调用注册。

的客户机/ register.js

'submit #app-register-user': function(e,t){
        e.preventDefault();
        var user = {
            username: t.find('#app-username').value,
            email: t.find('#app-email').value,
            password: t.find('#app-password').value,
            profile:{
                name: t.find('#app-username').value
            }
        };
        Meteor.call('createUserAccount', user, function(error) {
            if(error){
                alert(error);
            }
            else{
                $("#joinModal").modal("hide");
            }
        });
}

这会创建用户,但不会发送任何验证电子邮件。但是,如果我是这样从客户端创建用户

的客户机/ register.js

Accounts.createUser({
        username: t.find('#app-username').value,
        email: t.find('#app-email').value,
        password: t.find('#app-password').value,
        profile:{
            name: t.find('#app-username').value
        }
    },function(err){
        if(err){
            alert("something went wrong "+ err);
        }
        else{
            $("#joinModal").modal("hide");
        }
})

电子邮件已发送。

我尝试从服务器端创建用户的原因是因为我想禁用自动登录并允许经过验证的用户登录。

如何解决这个问题的任何帮助将不胜感激!

谢谢。

1 个答案:

答案 0 :(得分:2)

如果您创建用户客户端,则Accounts包将负责在Meteor.users集合中创建用户,然后发送验证电子邮件。 它通过调用服务器方法createUser来实现。

如果您像使用自己的方法一样创建新的用户服务器端,则“帐户”包仅会创建用户。您必须自己发送验证邮件,如richsilv建议的那样。或者使用一些其他例程将您的验证电子邮件发送给用户。

如果您想了解一下Accounts包如何处理这个问题,请查看:Accounts packages createUser/verification