10

我想在创建某些用户时发送验证电子邮件。我使用 accounts-password 包,因此在我的代码中调用了任何 Accounts 方法。

我阅读了我需要调用的文档:

Accounts.sendVerificationEmail(userId, [email])

但问题是我不知道何时调用它。

我试图调用的回调函数,Accounts.onCreateUser(func)但尚未在数据库中创建用户。

有任何想法吗?

4

3 回答 3

14

在服务器端:

Accounts.config({sendVerificationEmail: true, forbidClientAccountCreation: false}); 

从上面的评论中得到了答案。

于 2013-05-21T11:44:17.893 回答
3

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;
});
于 2014-08-25T13:32:32.290 回答
2

您需要在环境变量中指定邮件。然后在抱歉错误和延迟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

http://sendgrid.com/blog/send-email-meteor-sendgrid/

为什么我的带有帐户包的 Meteor 应用程序没有发送验证电子邮件?

于 2014-02-17T21:22:36.583 回答