| MIME-Lite-TT documentation | Contained in the MIME-Lite-TT distribution. |
MIME::Lite::TT - TT enabled MIME::Lite wrapper
use MIME::Lite::TT;
my $msg = MIME::Lite::TT->new(
From => 'me@myhost.com',
To => 'you@yourhost.com',
Subject => 'Hi',
Template => \$template,
TmplParams => \%params,
TmplOptions => \%options,
);
$msg->send();
MIME::Lite::TT is the wrapper of MIME::Lite which enabled Template::Toolkit as a template of email.
The same value passed to the 1st argument of the process method of Template::Toolkit is set to this option.
The parameter of a template is set to this option. This parameter must be the reference of hash.
configuration of Template::Toolkit is set to this option. ABSOLUTE and RELATIVE are set to 1 by the default.
template is force upgraded. (means utf-8 flag turns on)
use MIME::Lite::TT;
my $template = <<TEMPLATE;
This is template.
my name is [% name %].
TEMPLATE
my %params = (name => 'horiuchi');
my %options = (EVAL_PERL=>1);
my $msg = MIME::Lite::TT->new(
From => 'me@myhost.com',
To => 'you@yourhost.com',
Subject => 'hi',
Template => \$template,
TmplParams => \%params,
TmplOptions => \%options,
);
$msg->send();
Author <horiuchi@vcube.com>
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
| MIME-Lite-TT documentation | Contained in the MIME-Lite-TT distribution. |
package MIME::Lite::TT; use strict; use vars qw($VERSION); $VERSION = '0.02'; use MIME::Lite; use Template; use Carp (); sub new { my ($class, %options) = @_; %options = $class->_before_process(%options); if ( my $template = delete $options{Template} ) { my $tmpl_options = delete $options{TmplOptions} || {}; my %config = (ABSOLUTE => 1, RELATIVE => 1, %$tmpl_options, ); if ( $options{TmplUpgrade}) { $config{LOAD_TEMPLATES} = [MIME::Lite::TT::Provider->new(\%config)]; } my $tt = Template->new(\%config); my $tmpl_params = delete $options{TmplParams} || {}; $tt->process($template, $tmpl_params, \$options{Data}) or Carp::croak $tt->error; } %options = $class->_after_process(%options); MIME::Lite->new(%options); } sub _before_process { my $class = shift; @_; } sub _after_process { my $class = shift; @_; } package MIME::Lite::TT::Provider; use strict; use base qw(Template::Provider); sub _load { my $self = shift; my ($data, $error) = $self->SUPER::_load(@_); if(defined $data) { $data->{text} = utf8_upgrade($data->{text}); } return ($data, $error); } sub utf8_upgrade { my @list = map pack('U*', unpack 'U0U*', $_), @_; return wantarray ? @list : $list[0]; } 1; __END__