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

Небольшая справка по веткам

cnddist – контейнер, в котором хранятся все дистрибутивы всех библиотек и программных пакетов, которые использовались при построении различных версий Contenido. Если какой-то библиотеки в данном хранилище нет, инсталлятор сделает попытку "подтянуть" ее с веба (например, с CPAN). Если библиотека слишком старая, есть очень большая вероятность, что ее там уже нет. Поэтому мы храним весь хлам от всех сборок. Если какой-то дистрибутив вдруг отсутствует в cnddist - напишите нам, мы положим его туда.

koi8 – отмирающая ветка, чей код, выдача и все внутренние библиотеки заточены на кодировку KOI8-R. Вносятся только те дополнения, которые касаются внешнего вида и функционала админки, баги ядра, обязательные обновления портов и мелочи, которые легко скопипастить. В дальнейшем планируется полная остановка поддержки по данной ветке.

utf8 – актуальная ветка, заточенная под UTF-8.

Внутри каждой ветки: core – исходники ядра; install – скрипт установки инсталляции; plugins – плагины; samples – "готовые к употреблению" проекты, которые можно поставить, запустить и посмотреть, как они работают.