首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用meteor成功注册用户后发送电子邮件。

使用meteor成功注册用户后发送电子邮件。
EN

Stack Overflow用户
提问于 2016-01-28 13:10:15
回答 1查看 1.3K关注 0票数 2

我想添加电子邮件功能到我的应用程序。我添加了电子邮件包,并按照提供的文档执行步骤

我希望当用户注册自己,电子邮件应该发送后,成功注册。

以下是我尝试过的:

server/smtp.js:

代码语言:javascript
运行
复制
Meteor.startup(function () {
  smtp = {
    username: 'abc@gmail.com',   // eg: server@gentlenode.com
    password: 'abc123',   // eg: 3eeP1gtizk5eziohfervU
    server:   'smtp.gmail.com',  // eg: mail.gandi.net
    port: 25
  }

  process.env.MAIL_URL = 'smtp://' + encodeURIComponent(smtp.username) + ':' + encodeURIComponent(smtp.password) + '@' + encodeURIComponent(smtp.server) + ':' + smtp.port;
});

这里是我调用方法的服务器/emp_dietys.js。下面的代码放置在Meteor.methods()中:

代码语言:javascript
运行
复制
sendEmail: function (to, from, subject, text) {
    check([to, from, subject, text], [String]);

    // Let other method calls from the same client start running,
    // without waiting for the email sending to complete.
    this.unblock();

    //actual email sending method
    Email.send({
      to: to,
      from: from,
      subject: subject,
      text: text
    });
  }

最后,我在客户端调用该方法,如下所示:

代码语言:javascript
运行
复制
Template.register.onRendered(function()
{
    var validator = $('.register').validate({
        submitHandler: function(event)
        {
            var email = $('[name=email]').val();
            var password = $('[name=password]').val();
            var empProfile = Session.get('profileImage');
            console.log(empProfile);
            Accounts.createUser({
                email: email,
                password: password,
                profile: {
                    name:'test',
                    image: empProfile
                },
                function(error)
                {
                    if(error)
                    {
                        if(error.reason == "Email already exists.")
                        {
                            validator.showErrors({
                                email: "This email already belongs to a registered user"
                            });
                        }
                    }
                    else
                    {
                        Meteor.call('sendEmail',
                        'alice@example.com',
                        'abc@example.com',
                        'Hello from Meteor!',
                        'This is a test of Email.send.');
                        Router.go("home");
                    }
                }
            });
        }
    });
});

我不知道如何正确地使用这个电子邮件功能。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-01-28 14:11:09

我可以提出另一种解决办法吗?在服务器端向Accounts.onCreateUser()添加一个钩子以发送电子邮件:

代码语言:javascript
运行
复制
Accounts.onCreateUser(function (options, user) {
    Meteor.call(
        'sendEmail', 
        'admin@yoursite.com',
        user.profile.email, //use the path to the users email in their profile
        'Hello from Meteor!',
        'This is a test of Email.send.'
    );
});

你真的在用gmail吗?我相信google的SMTP端口是465,而不是25。确认您的电子邮件发送工作以外的流星使用该配置,然后尝试它在流星。我也相信谷歌将通过SMTP发送的电子邮件数量限制在每天99封,所以要小心。如果要验证用户的电子邮件地址,请使用accounts包中内置的电子邮件验证系统。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35062463

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档