使用Meteor发送验证电子邮件导致错误

时间:2014-03-02 06:41:57

标签: meteor meteorite

我有以下内容:

Template.joinTemplate.events({
"submit #Signup-Form": function(event, template) {
    event.preventDefault();
    var email = template.find('#Email').value;
    Accounts.createUser({
        username: template.find('#Email').value,
        emails: {
            address: template.find('#Email').value
        },
        password: template.find('#Password').value,
        profile: {
            firstname: template.find("#Firstname").value,
            lastname: template.find("#Lastname").value

        }
    }, function(error) {
        if (error) {
            // Deal with errors
        } else {
            Accounts.sendVerificationEmail(this.userId, email);
            Router.go('/');

        }
    });
}
});

但是得到以下错误:

 Error logging in with token: Error: You've been logged out by the server. Please login again. [403] debug.js:41
Exception in delivering result of invoking 'createUser': TypeError: Object #<Object> has no method 'sendVerificationEmail'
    at http://localhost:3000/client/views/application/authentication/join_template.js?0ca175e5dc0f3b4596ed33e260d5636f8f9cc69b:28:26
    at http://localhost:3000/packages/underscore.js?0a80a8623e1b40b5df5a05582f288ddd586eaa18:801:19
    at loggedInAndDataReadyCallback (http://localhost:3000/packages/accounts-base.js?efdcc57c69f7e2ccbb61f1e963da216b1729ac72:455:5)
    at null._callback (http://localhost:3000/packages/meteor.js?2b578107b8239ff9bc64200e6af2a24001461b30:801:22)
    at _.extend._maybeInvokeCallback (http://localhost:3000/packages/livedata.js?418d88f2513ae6bf0ff1447759a5c590923456bd:3502:12)
    at _.extend.receiveResult (http://localhost:3000/packages/livedata.js?418d88f2513ae6bf0ff1447759a5c590923456bd:3522:10)
    at _.extend._livedata_result (http://localhost:3000/packages/livedata.js?418d88f2513ae6bf0ff1447759a5c590923456bd:4452:9)
    at onMessage (http://localhost:3000/packages/livedata.js?418d88f2513ae6bf0ff1447759a5c590923456bd:3376:12)
    at http://localhost:3000/packages/livedata.js?418d88f2513ae6bf0ff1447759a5c590923456bd:2705:11
    at Array.forEach (native) 

我已安装所有帐户 - 基座,帐户 - ui,帐户密码。

不确定我做错了什么:(

1 个答案:

答案 0 :(得分:2)

正如您在the documentation中所读到的那样,Accounts.sendVerificationEmail仅在服务器上可用,并且您尝试在客户端上使用它。

我不确定您是否可以使用Accounts.onCreateUser功能发送验证电子邮件:在此功能中,用户尚未添加到Meteor.users集合中,我猜{ {1}}要求用户在该集合中。我不知道解决此问题的最佳方法,但您可以随时使用光标选择所有用户,然后观察添加到集合中的用户(尽管这不是一个好的解决方案)。

使用Accounts.config函数中的Accounts.sendVerificationEmail字段是不够的?