Проверить электронную почту с помощью пакета accounts.ui

Я хочу отправить электронное письмо с подтверждением при создании какого-либо пользователя. Я использую пакет паролей учетных записей, поэтому в моем коде вызываются любые методы Accounts.

Я прочитал в документации, что мне нужно позвонить:

Accounts.sendVerificationEmail(userId, [email])

но проблема в том, что я не знаю, когда его называть.

Я попытался вызвать функцию обратного вызова Accounts.onCreateUser(func), но пользователь еще не был создан в базе данных.

Любые идеи?

Ответ 1

на сервере:

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

получил ответ от комментариев выше.

Ответ 2

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;
});

Ответ 3

Вам нужно указать почту в переменных окружения. Затем используйте 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:[email protected]:port'
   }
}

Я ссылался на следующие страницы: http://blog.benmcmahen.com/post/41741539120/building-a-customized-accounts-ui-for-meteor

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

Почему мое приложение Meteor со своим аккаунтом не отправляет электронное письмо с подтверждением?