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

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

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

Accounts.sendVerificationEmail(userId, [email])

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

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

Есть идеи?


person nsblenin    schedule 31.01.2013    source источник
comment
Я понял. Просто вызовите Accounts.config({sendVerificationEmail: true, forbidClientAccountCreation: false}); на сервере   -  person nsblenin    schedule 31.01.2013
comment
Вы можете добавить свой комментарий в качестве ответа и принять свой ответ (у вас будет доступ через пару дней).   -  person TimDog    schedule 31.01.2013
comment
Это все еще проблема nsblenin?   -  person cmather    schedule 16.03.2013
comment
Добавление этого для тех, кто спотыкается: хотя в документах Meteor говорится, что вы можете добавить его в любом месте, у меня это сработало только после добавления кода Accounts.config в файл javascript только для сервера.   -  person timelincoln    schedule 24.04.2013
comment
Серьезно, почему люди почти НИКОГДА не добавляют свои ответы ниже, когда натыкаются на правильное решение?   -  person Seth Malaki    schedule 10.05.2013


Ответы (3)


на стороне сервера:

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

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

person Laurens    schedule 21.05.2013

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;
});
person Julien Le Coupanec    schedule 25.08.2014
comment
В setTimeout нет необходимости, так как в это время у пользователя уже есть свойство _id. - person Fabian Vilers; 23.07.2015
comment
Забудьте мой предыдущий комментарий, функция sendVerificiationEmail будет жаловаться на то, что пользователь не найден. Я думаю, что лучший подход — подключиться после вставки в коллекцию Meteor.user и затем отправить электронное письмо с подтверждением. - person Fabian Vilers; 23.07.2015

Вам нужно указать почту в переменных окружения. Затем используйте 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/< /а>

Почему мой Метеор приложение с пакетом учетных записей не отправляет письмо с подтверждением?

person despi23    schedule 17.02.2014
comment
Я попробовал это и получил следующую ошибку: Исключение при доставке результата вызова «createUser»: TypeError: Object #‹Object› не имеет метода «sendVerificationEmail». Знаете ли вы, что я могу делать неправильно? - person user1447679; 02.03.2014
comment
В последнем патче метеора они могут изменить sendVericationEmail в документации, в которой говорится, что теперь его можно использовать на стороне сервера. Я проверю это сам и отредактирую свой пост, когда закончу. Вот ссылка на документацию docs.meteor.com/#accounts_sendverificationemail< /а>. - person despi23; 07.03.2014
comment
Извините, что ввел в заблуждение его Acounts.onCreateUser. - person despi23; 02.01.2015