如何将验证邮件从服务器发送到客户端的注册邮箱

时间:2017-04-19 05:43:06

标签: meteor

我正在使用meteor来开发我的应用程序。我需要在注册后立即验证用户。我使用meteor的SendverificationEmail()方法,我在服务器端获得链接。现在我想将这个唯一的链接发送到客户的注册邮箱。怎么做?

2 个答案:

答案 0 :(得分:0)

您必须使用meteor电子邮件包发送电子邮件: Meteor Email Package

添加软件包之后,只需在您的方法中编写以下代码即可发送电子邮件

Email.send({ to, from, subject, text });

答案 1 :(得分:0)

很抱歉看到这篇文章不太晚,但有很多人愿意在今天实现这一点。以下是实现电子邮件验证流程的步骤。

  

注意:我正在使用Meteor 1.6.1.1,带有Flow-routers + Blaze模板。此外,请确保您已启用对Gmail的第三方API访问权限。您可以通过Gmail设置执行此操作。

     

导入包:accounts-ui,accounts-password

root_folder/server/文件夹中,在代码下方main.js内部复制粘贴,并对您的文件进行必要的凭据更改。

var username = 'asdasdasdas'; 
var password = 'sdasdasdasd';
var server = 'smtp.gmail.com';
var port = '465';

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

process.env.NODE_TLS_REJECT_UNAUTHORIZED = 0;

Accounts.emailTemplates.from = 'support_team@domain.com';

//-- Application name
Accounts.emailTemplates.siteName = 'Your Site Name';

//-- Subject line of the email.
Accounts.emailTemplates.verifyEmail.subject = function(user) {
    return 'Email Confirmation.';
};

//-- Email text
Accounts.emailTemplates.verifyEmail.text = function(user, url) {
    var newUrl = url.replace('/#','');
    return 'Thank you for registering.  Please click on the following link to verify your email address: \r\n' + newUrl;
};

// Configure to send the Email Verification mail as true
Accounts.config({
    sendVerificationEmail: true,
    restrictCreationByEmailDomain: function(email) {
        var domain = email.slice(email.lastIndexOf("@")+1); // or regex
        var allowed = ["gmail.com", "yahoo.co.in", "outlook.com", "yahoo.com", "yandex.com", "protonmail.com", "protonmail.ch", ];
        return _.contains(allowed, domain);
      },
    loginExpirationInDays: 1
});

当您在Meteor应用程序中成功创建帐户时,您将收到如下电子邮件;

enter image description here

在邮件中,您会看到一个带有模式/verify-email/:token路线的链接,因此请进入project/client/routes.js您需要添加路线,

 import { FlowRouter } from 'meteor/kadira:flow-router';

//force user to stay on home page instead of desired page
Accounts.onLogin(function(user){
  var user = Meteor.user();
  if(user.emails && user.emails[0].verified){
    FlowRouter.go('dashboard');
  }
});

FlowRouter.route('/verify-email/:tokenId', {
  name: 'verify-email',
  action: function(params, queryParams) {
    var token = FlowRouter.getParam("tokenId");
    console.log(token);
    Accounts.verifyEmail(token, function(err){
      if(!err){
        FlowRouter.go("dashboard");
      } else {
        FlowRouter.go("error-page");
      } 
    });

  },
});

如果您使用的是铁路由器,可以参考此LINK