Ответ 1
на сервере:
Accounts.config({sendVerificationEmail: true, forbidClientAccountCreation: false});
получил ответ от комментариев выше.
Я хочу отправить электронное письмо с подтверждением при создании какого-либо пользователя. Я использую пакет паролей учетных записей, поэтому в моем коде вызываются любые методы Accounts.
Я прочитал в документации, что мне нужно позвонить:
Accounts.sendVerificationEmail(userId, [email])
но проблема в том, что я не знаю, когда его называть.
Я попытался вызвать функцию обратного вызова Accounts.onCreateUser(func)
, но пользователь еще не был создан в базе данных.
Любые идеи?
на сервере:
Accounts.config({sendVerificationEmail: true, forbidClientAccountCreation: false});
получил ответ от комментариев выше.
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;
});
Вам нужно указать почту в переменных окружения.
Затем используйте 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 со своим аккаунтом не отправляет электронное письмо с подтверждением?