【问题标题】:How to implement substitutions?如何实施换人?
【发布时间】:2019-07-19 06:26:54
【问题描述】:

我正在使用 Email::SendGrid::V3 Perl 库,我的目标是通过使用他们的名字问候他们来向许多收件人发送一封电子邮件。但是,我无法弄清楚如何使用他们的在线文档进行个性化:

https://metacpan.org/pod/Email::SendGrid::V3#$self-%3Eset_section($key,-$value);

我可以向两个不同的人发送一封电子邮件,但我缺乏关于如何处理身体替换的信息。

use Email::SendGrid::V3;

my $sg = Email::SendGrid::V3->new(api_key => 'ABCDE');

my $result = $sg->from('noreply@mydomain.com')
->subject('This is a subject line')
->add_envelope( to => [ {email => 'john@mydomain.com', name => 'John Smith' }] )
->set_section('-NAME-', 'John')
->add_content('text/html', 'Hello -NAME-, how are you?')
->send;

print $result->{success} ? "It worked" : "It failed: " . $result->{reason};

任何提示将不胜感激。

【问题讨论】:

    标签: perl sendgrid


    【解决方案1】:

    我有机会从开发者那里得到快速反馈,解决方案如下:

    my $result = $sg->from('noreply@mydomain.com')
    ->subject('This is a subject line')
    ->add_content('text/html', 'Hello -NAME-, how are you?')
    ->add_envelope( to => [ {email => 'fred@mydomain.com', name => 'Fred Smith' }], substitutions => { '-NAME-' => 'Fred' } )
    ->add_envelope( to => [ {email => 'john@mydomain.com', name => 'John Smith' }], substitutions => { '-NAME-' => 'John' } )
    ->send;
    

    【讨论】:

      【解决方案2】:

      这只是模板;你有一个模板,你想填写值。 Text::Template 是一个简单的实现,但由于您的结果是 HTML,您需要一个 HTML 感知模板引擎,如 Text::XslateMojo::Template,因此您不必记住对每个值进行 HTML 转义。还有Template::Toolkit,它是总体上最常用和最可配置的模板系统。下面是一个使用 Mojo::Template 的示例。

      use strict;
      use warnings;
      use Mojo::Template;
      
      my $mt = Mojo::Template->new(vars => 1, auto_escape => 1);
      my $template = 'Hello <%= $name %>, how are you?';
      my $rendered = $mt->render($template, {name => 'John'});
      

      【讨论】:

      • 谢谢!我明白你在说什么。然后我是否应该假设我需要多次使用发送方法,每个收件人一个?我实际上试图在同一个块中指定两个 add_content 但它不喜欢它。
      • @Questionz 是的;由于每个收件人需要不同的内容,因此需要将它们作为单独的电子邮件发送。
      • @Questionz 我实际上错过了 SendGrid 自己做模板;您当然可以为此使用它,但您需要记住我提到的 HTML 转义,而且看起来每个都需要单独发送。
      • 有趣,谢谢,我真的认为 API 能够通过阅读他们的文档来处理替换。正如他们所说,可以在信封中添加替换哈希并认为就是这样。
      • @Questionz 如果可能的话,我怀疑它会直接在 add_envelope 调用中添加多个信封,每个信封都有自己的“替代”哈希。不幸的是,我找不到任何关于该哈希实际上是什么的文档。
      猜你喜欢
      • 2018-10-31
      • 1970-01-01
      • 2023-03-02
      • 2013-06-17
      • 2011-10-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多