【问题标题】:Dynamic URL in Meteor Email TemplateMeteor 电子邮件模板中的动态 URL
【发布时间】:2015-12-03 02:42:12
【问题描述】:

我是 Meteor 的初学者,我想使用 Iron:router 向我的应用程序中的动态生成页面发送邀请链接。

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 中获得该网站的网址。我得到了

<a href="{{link}}">Link to invitation</a>

我做错了什么?

【问题讨论】:

    标签: email meteor iron-router


    【解决方案1】:

    您的方法是服务器方法 (SSR)。 Router.current() 是客户端方法,不能返回任何服务器端。解决方案是将url作为参数传递。以这种方式调用您的方法:

    Meteor.call( 'sendEmail', email, url, ... )
    

    那么你的方法将是:

    'sendEmail': function( to, url ) {...
    

    【讨论】:

    • 好建议,虽然它没有回答问题。问题是关于在电子邮件模板中呈现链接。请参阅我的答案,它为SSR.render 添加了额外的参数。
    【解决方案2】:

    查看您的代码,我会说您将服务器端方法和客户端模板帮助程序混为一谈。

    你想达到什么目标?是否希望将用户在您的站点中所在的当前路线包含在邮件中?然后,像 fabien 建议的那样,在您的 sendEmail 方法中将 url 作为额外参数发送。 如果该链接是您用作某个登录页面链接的静态路径,我建议从 settings.json 获取该路径。

    无论哪种方式,您的问题是呈现一封包含一些链接的电子邮件。您可以将对象作为第二个参数传递给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
        });
    }})
    }
    

    【讨论】:

    • 那么你如何在属性标签中得到它呢?我传递了一个包含大量信息的对象,我可以将其呈现到电子邮件中,但具体问题是将它放入一个对我不起作用的属性中。我尝试&lt;a href="{{myLink}}"&gt;&lt;/a&gt;,但它根本不呈现href。
    • 看起来你做对了。你提到你传递一个对象。它必须包含一个 myLink 字段。
    • 是的,它只是“不起作用”的事情之一,但现在它...... :)
    猜你喜欢
    • 2013-07-24
    • 2013-10-26
    • 2017-09-22
    • 2022-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-03
    • 1970-01-01
    相关资源
    最近更新 更多