使用Catalyst和Catalyst :: Plugin :: Email在电子邮件中发送html

时间:2013-09-04 22:25:17

标签: plugins html-email catalyst

我一直在阅读有关Catalyst框架的内容,我正在尝试发送包含HTML内容的电子邮件但没有成功。

我尝试使用Catalyst :: Plugin :: Email,就像示例here一样。电子邮件已发送,但所有内容均以纯文本显示。

sub send_email : Local {
    my ($self, $c) = @_;

    $c->email(
      header => [
        To      => 'me@localhost',
        Subject => 'A TT Email',
      ],
      body => $c->view('Web')->render($c, 'email.tt', {
          additional_template_paths => [ $c->config->{root} . '/email_templates'],
          email_tmpl_param1 => 'foo'
        }
      ),
    );
    # Redirect or display a message
}

我还阅读了Catalyst::View::Email::Template,但我不能安装它。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

我现在可以使用Catalyst :: Plugin :: Email发送HTML电子邮件。来自文档:

“email()接受与Email :: MIME :: Creator的create()相同的参数。”

查看Email :: MIME :: Creator,创建方法结构为:

my $single = Email::MIME->create(
    header_str => [ ... ],
    body_str   => '...',
    attributes => { ... },
);

my $multi = Email::MIME->create(
    header_str => [ ... ],
    parts      => [ ... ],
    attributes => { ... },
);

“返回属性。散列键直接对应于方法或修改来自Email :: MIME :: Modifier的消息。允许的键是:content_type,charset,name,format,boundary,encoding,disposition和filename。它们将映射到“$ attr_set”以进行消息修改。“

这是它正在运作的代码:

sub send_email : Local {
    my ($self, $c) = @_;

    $c->email(
      header => [
        To      => 'me@localhost',
        Subject => 'A TT Email',
      ],
      body => $c->view('Web')->render($c, 'email.tt', {
          additional_template_paths => [ $c->config->{root} . '/email_templates'],
          email_tmpl_param1 => 'foo'
        }
      ),
      attributes => {
        content_type => 'text/html',
        charset => 'utf-8'
      },
    );

    # Redirect or display a message
}