Meteor 电子邮件模板中的动态 URL
Dynamic URL in Meteor Email Template
我是 Meteor 的初学者,我想用 iron:router 向我的应用程序中动态生成的页面发送邀请 link。
Meteor.methods({
'sendEmail': function(to) {
this.unblock();
SSR.compileTemplate( 'emailText', Assets.getText( 'html-email.html' ) );
Template.emailText.helpers({
link: function () {
return Router.current().route.path(this);;
}
});
Email.send({
to:to,
from: 'no-reply@whatever.xyz',
subject:'xyz wants to invite you ',
html: SSR.render('emailText')
});
}})
}
问题是我的 html-email.html
中没有网站的 url。我有
<a href="{{link}}">Link to invitation</a>
我做错了什么?
您的方法是服务器方法 (SSR)。 Router.current()
是客户端方法,不能 return 任何服务器端方法。解决方案是将 url 作为参数传递。以这种方式调用您的方法:
Meteor.call( 'sendEmail', email, url, ... )
那么你的方法将是:
'sendEmail': function( to, url ) {...
看看你的代码,我会说你混淆了服务器端方法和客户端模板助手。
你想达到什么目的?想要将用户在您站点中所在的当前路由包含在邮件中吗?然后,像 fabien 建议的那样,将 url 作为额外参数发送到 sendEmail
方法中。
如果 link 是您用作某个登录页面的 link 的静态路径,我建议从 settings.json.
获取该路径
无论哪种方式,您的问题是呈现一封包含 link 的电子邮件。您可以将对象作为第二个参数传递给 SSR.render
。
以下是解决此问题的方法:
Meteor.methods({
'sendEmail': function(to) {
this.unblock();
var linkInMail = 'htpp://some_url/etc?etc'; // Fill this value, see my remark above
var templateName = 'emailText';
SSR.compileTemplate(templateName, Assets.getText( 'html-email.html' ) );
var renderedContent = SSR.render(templateName, {link: linkInMail}); // This your missing part
Email.send({
to:to,
from: 'no-reply@whatever.xyz',
subject:'xyz wants to invite you ',
html: renderedContent
});
}})
}
我是 Meteor 的初学者,我想用 iron:router 向我的应用程序中动态生成的页面发送邀请 link。
Meteor.methods({
'sendEmail': function(to) {
this.unblock();
SSR.compileTemplate( 'emailText', Assets.getText( 'html-email.html' ) );
Template.emailText.helpers({
link: function () {
return Router.current().route.path(this);;
}
});
Email.send({
to:to,
from: 'no-reply@whatever.xyz',
subject:'xyz wants to invite you ',
html: SSR.render('emailText')
});
}})
}
问题是我的 html-email.html
中没有网站的 url。我有
<a href="{{link}}">Link to invitation</a>
我做错了什么?
您的方法是服务器方法 (SSR)。 Router.current()
是客户端方法,不能 return 任何服务器端方法。解决方案是将 url 作为参数传递。以这种方式调用您的方法:
Meteor.call( 'sendEmail', email, url, ... )
那么你的方法将是:
'sendEmail': function( to, url ) {...
看看你的代码,我会说你混淆了服务器端方法和客户端模板助手。
你想达到什么目的?想要将用户在您站点中所在的当前路由包含在邮件中吗?然后,像 fabien 建议的那样,将 url 作为额外参数发送到 sendEmail
方法中。
如果 link 是您用作某个登录页面的 link 的静态路径,我建议从 settings.json.
无论哪种方式,您的问题是呈现一封包含 link 的电子邮件。您可以将对象作为第二个参数传递给 SSR.render
。
以下是解决此问题的方法:
Meteor.methods({
'sendEmail': function(to) {
this.unblock();
var linkInMail = 'htpp://some_url/etc?etc'; // Fill this value, see my remark above
var templateName = 'emailText';
SSR.compileTemplate(templateName, Assets.getText( 'html-email.html' ) );
var renderedContent = SSR.render(templateName, {link: linkInMail}); // This your missing part
Email.send({
to:to,
from: 'no-reply@whatever.xyz',
subject:'xyz wants to invite you ',
html: renderedContent
});
}})
}