我正在使用meteor来开发我的应用程序。我需要在注册后立即验证用户。我使用meteor的SendverificationEmail()方法,我在服务器端获得链接。现在我想将这个唯一的链接发送到客户的注册邮箱。怎么做?
答案 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应用程序中成功创建帐户时,您将收到如下电子邮件;
在邮件中,您会看到一个带有模式/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