在 Meteor 中使用电子邮件验证注册不起作用?应该怎么做?
Signup with email verification in Meteor not working? How should it be done?
我正在尝试在 Meteor 中创建带有电子邮件验证的自定义注册页面。我想使用 Mandrill 发送验证邮件。在 server 文件夹中,我有一个方法-
addUser: function(user) {
console.log("Adding User - ", user);
var userOptions = {
email: user.email, password: user.password,
profile: {firstname: user.firstname, lastname: user.lastname}
};
var createdUser = Accounts.createUser(userOptions);
console.log("CreatedUser-", createdUser);
Accounts.onCreateUser(function(options, createdUser) {
if (options.profile) {
createdUser.profile = options.profile;
}
else {
createdUser.profile = {};
}
Accounts.sendVerificationEmail(createdUser._id, createdUser.email);
return createdUser;
});
Accounts.createUser方法正在插入一条记录,但是邮件没有发出。我还使用 Mandrill smtp 凭据定义了 process.env.MAIL_URL。我厌倦了浏览文档并检查了几个博客,但似乎没有任何效果。如果我删除 createUser() 则用户不会插入 mongo 数据库并且 onCreateUser() 失败并出现异常。我已经阅读了 Meteor 文档,但仍然对 onCreateUser() 的工作原理感到困惑? onCreateUser() 方法将如何获取选项和用户参数?我一直坚持这个,任何 guidance/help 表示赞赏。在经历了关于 Whosebug 的另一个问题之后,我删除了电子邮件 pacakge。我确实已将 wylio:mandrill 添加到项目中。我需要电子邮件包吗?
我认为您只需要像这样设置一个配置设置:
Accounts.config({
sendVerificationEmail: true
});
如果不设置为true(默认为false),它会将邮件内容输出到服务器控制台,这有利于测试,但显然不利于实际发送邮件。
我会重新添加电子邮件包,我认为您需要它来发送电子邮件。希望对您有所帮助。
为了发送电子邮件,我在服务器端添加了 gmail smtp。一旦我建立了一些动力,稍后会研究山魈。
var smtp = {
host: "smtp.gmail.com",
port: "465",
username: "<your gmail id without @gmail.com>",
password: "<your password>",
//ssl: true
};
我为此在 gmail 上创建了一个单独的帐户。为了添加用户,我不得不更改代码。我首先在客户端使用 Accounts.createUser() 创建了用户,然后在服务器端 js.
调用了一个方法来发送具有 Accounts.sendVerificationEmail() 的电子邮件
//client-side
var createdUserId = Accounts.createUser(userOptions, function(error) {
console.log(error);
});
Meteor.call('registerUser', createdUserId);
//Server-side
registerUser: function(createdUserId) {
....
Accounts.sendVerificationEmail(createdUser._id);
....
}
我正在尝试在 Meteor 中创建带有电子邮件验证的自定义注册页面。我想使用 Mandrill 发送验证邮件。在 server 文件夹中,我有一个方法-
addUser: function(user) {
console.log("Adding User - ", user);
var userOptions = {
email: user.email, password: user.password,
profile: {firstname: user.firstname, lastname: user.lastname}
};
var createdUser = Accounts.createUser(userOptions);
console.log("CreatedUser-", createdUser);
Accounts.onCreateUser(function(options, createdUser) {
if (options.profile) {
createdUser.profile = options.profile;
}
else {
createdUser.profile = {};
}
Accounts.sendVerificationEmail(createdUser._id, createdUser.email);
return createdUser;
});
Accounts.createUser方法正在插入一条记录,但是邮件没有发出。我还使用 Mandrill smtp 凭据定义了 process.env.MAIL_URL。我厌倦了浏览文档并检查了几个博客,但似乎没有任何效果。如果我删除 createUser() 则用户不会插入 mongo 数据库并且 onCreateUser() 失败并出现异常。我已经阅读了 Meteor 文档,但仍然对 onCreateUser() 的工作原理感到困惑? onCreateUser() 方法将如何获取选项和用户参数?我一直坚持这个,任何 guidance/help 表示赞赏。在经历了关于 Whosebug 的另一个问题之后,我删除了电子邮件 pacakge。我确实已将 wylio:mandrill 添加到项目中。我需要电子邮件包吗?
我认为您只需要像这样设置一个配置设置:
Accounts.config({
sendVerificationEmail: true
});
如果不设置为true(默认为false),它会将邮件内容输出到服务器控制台,这有利于测试,但显然不利于实际发送邮件。
我会重新添加电子邮件包,我认为您需要它来发送电子邮件。希望对您有所帮助。
为了发送电子邮件,我在服务器端添加了 gmail smtp。一旦我建立了一些动力,稍后会研究山魈。
var smtp = {
host: "smtp.gmail.com",
port: "465",
username: "<your gmail id without @gmail.com>",
password: "<your password>",
//ssl: true
};
我为此在 gmail 上创建了一个单独的帐户。为了添加用户,我不得不更改代码。我首先在客户端使用 Accounts.createUser() 创建了用户,然后在服务器端 js.
调用了一个方法来发送具有 Accounts.sendVerificationEmail() 的电子邮件//client-side
var createdUserId = Accounts.createUser(userOptions, function(error) {
console.log(error);
});
Meteor.call('registerUser', createdUserId);
//Server-side
registerUser: function(createdUserId) {
....
Accounts.sendVerificationEmail(createdUser._id);
....
}