root/websites/mobilecat/trunk/lib/MobileCat/View/Email.pm

Revision 18688, 1.7 kB (checked in by tomi-ru, 17 months ago)

mail body のcharsetはmime_encoding->mime_nameではなくmail_encoding->mime_name。たまたま同じですが。

Line 
1package MobileCat::View::Email;
2use strict;
3use warnings;
4use base qw/ Catalyst::View Catalyst::Component::ACCEPT_CONTEXT /;
5__PACKAGE__->mk_accessors(qw/ mailer /);
6
7use Carp;
8use Email::Address::JP::Mobile;
9use Email::MIME;
10use Email::MIME::Creator;
11use Email::Send ();
12
13sub new {
14    my $self = shift->next::method(@_);
15   
16    $self->mailer( Email::Send->new($self->{sender}) );
17    $self;
18}
19
20sub send {
21    my ($self, $template, $args) = @_;
22   
23    $args = $self->merge_config_hashes(
24        $self->{default},
25        $args || {}
26    );
27   
28    $self->context->stash(set_subject => sub { # capture subject
29        $args->{subject} = shift if $_[0];
30        return;
31    });
32     
33    $args->{body} ||= $self->context->view('TT')->render($template);
34   
35    my $carrier = Email::Address::JP::Mobile->new($args->{to})
36        or croak "'to' isnt defined!";
37   
38    my $header = [];
39    for my $field (qw( To From Bcc Cc Subject )) {
40        next unless $args->{ lc $field };
41       
42        if ($field eq 'Subject') {
43            $args->{ lc $field } = $carrier->mime_encoding->encode($args->{ lc $field });
44        } else {
45            $args->{ lc $field } = Encode::encode_utf8($args->{ lc $field }); # = utf8_off
46        }
47       
48        push @$header, ( $field => $args->{ lc $field } );
49    }
50   
51    my $email = Email::MIME->create(
52        header     => $header,
53        attributes => {
54            content_type => 'text/plain',
55            charset      => $carrier->mail_encoding->mime_name,
56        },
57        body => $carrier->mail_encoding->encode($args->{body}),
58    );
59
60    $self->context->log->debug($email->as_string);
61   
62    my $return = $self->mailer->send($email);
63    croak "$return" if ! $return;
64}
65
661;
Note: See TracBrowser for help on using the browser.