如何实现替代?

时间:2019-07-18 20:38:32

标签: perl sendgrid

我正在使用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};

任何提示将不胜感激。

2 个答案:

答案 0 :(得分:1)

这只是模板;您有一个模板,并且想要填写值。 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'});

答案 1 :(得分: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;