Line # Revision Author
1 37 ahitrov@rambler.ru <%args>
2
3 $email => undef
4
5 </%args>
6 <%init>
7
8 return unless ref $email;
9
10 use MIME::Lite;
11 use MIME::Base64;
12
13 my $subject = $email->{subject};
14 $subject = MIME::Base64::encode($subject);
15 $subject =~ s/\s+$//si;
16 $subject = '=?koi8-r?B?'.$subject.'?=';
17
18 my $emailfrom;
19 my ($from, $efrom) = $email->{from} =~ /^(.*?)<(.*?)>/ ? ($1, $2) : $email->{from} =~ /<(.*?)>/ ? ('',$1) : ('',$email->{from});
20 if ( $from ) {
21 $from = MIME::Base64::encode($from);
22 $from =~ s/\s+$//si;
23 $from = '=?koi8-r?B?'.$from.'?=';
24 $emailfrom = $from.' <'.$efrom.'>';
25 } else {
26 $emailfrom = $efrom;
27 }
28
29 my $emailto;
30 my ($to, $eto) = $email->{to} =~ /^(.*?)<(.*?)>/ ? ($1, $2) : $email->{to} =~ /<(.*?)>/ ? ('',$1) : ('',$email->{to});
31 if ( $to ) {
32 $to = MIME::Base64::encode($to);
33 $to =~ s/\s+$//si;
34 $to = '=?koi8-r?B?'.$to.'?=';
35 $emailto = $to.' <'.$eto.'>';
36 } else {
37 $emailto = $eto;
38 }
39 my $ccmail;
40 if ( exists $email->{cc} && ref $email->{cc} eq 'ARRAY' ) {
41 foreach my $cc ( @{ $email->{cc} } ) {
42 my ($cce, $ecce) = $cc =~ /^(.*?)<(.*?)>/ ? ($1, $2) : $cc =~ /<(.*?)>/ ? ('',$1) : ('',$cc);
43 $cc = $ecce;
44 }
45 $ccmail = join ', ', @{$email->{cc}};
46 } elsif ( exists $email->{cc} && $email->{cc} ) {
47 my ($cce, $ecce) = $email->{cc} =~ /^(.*?)<(.*?)>/ ? ($1, $2) : $email->{cc} =~ /<(.*?)>/ ? ('',$1) : ('',$email->{cc});
48 $ccmail = $ecce;
49 }
50
51
52 my $body = $email->{body};
53 warn Dumper($email);
54 my $dt = Contenido::DateTime->new;
55 $dt->set_locale('en_EN');
56 my $pdate = $dt->strftime("%a, %d %b %Y %H:%M:%S %z");
57 my $msg = MIME::Lite->new(
58 To => $emailto,
59 From => $emailfrom,
60 $ccmail ? ( Cc => $ccmail ) : (),
61 Subject => $subject,
62 Encoding=> 'binary',
63 Date => $pdate,
64 Type => 'multipart/related;type="multipart/alternative";charset="koi8-r"',
65 );
66 $msg->attach(
67 'Type' => 'text/html;charset="koi8-r"',
68 'Data' => $body,
69 'Disposition' => '',
70 );
71
72 $msg->send();
73
74 </%init>