1

我正在尝试在 Meteor 中创建带有电子邮件验证的自定义注册页面。我想使用 Mandrill 发送验证邮件。在服务器文件夹中,我有一个方法-

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 db 并且onCreateUser()失败并出现异常。我浏览了 Meteor 文档,但仍然对onCreateUser()的工作原理感到困惑?onCreateUser()方法将如何获取选项和用户参数?我一直坚持这一点,任何指导/帮助表示赞赏。在通过 stackoverflow 上的另一个问题后,我删除了电子邮件包。我有wylio:mandrill添加到项目中。我需要电子邮件包吗?

4

2 回答 2

1

我认为您只需要像这样设置配置设置:

Accounts.config({
  sendVerificationEmail: true
});

如果这没有设置为 true(默认为 false),它会将电子邮件的内容输出到服务器控制台,这有利于测试,但显然不利于实际发送电子邮件。

我会重新添加电子邮件包,我认为您需要它来发送电子邮件。希望有帮助。

于 2015-07-20T03:37:49.777 回答
0

为了发送电子邮件,我在服务器端添加了 gmail smtp。稍后会研究山魈,一旦我建立了一些moemtum。

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);
....
} 
于 2015-07-21T15:30:24.160 回答