Revision 66 (by ahitrov@rambler.ru, 2010/10/18 07:34:06) В скелет добавлена строка конфига для правильной работы sendmail.msn
Исправлены настройки MIME::Lite для формирования тела сообщения
<%args>

	$email	=> undef
	$etype	=> 'mixed'

</%args>
<%init>

  return	unless ref $email;

  use MIME::Lite;
  use MIME::Base64;

  my $subject = $email->{subject};
  $subject = MIME::Base64::encode($subject);
  $subject =~ s/\s+$//si;
  $subject = '=?koi8-r?B?'.$subject.'?=';

  my $emailfrom;
  my ($from, $efrom) = $email->{from} =~ /^(.*?)<(.*?)>/ ? ($1, $2) : $email->{from} =~ /<(.*?)>/ ? ('',$1) : ('',$email->{from});
  if ( $from ) {
	$from = MIME::Base64::encode($from);
	$from =~ s/\s+$//si;
	$from = '=?koi8-r?B?'.$from.'?=';
	$emailfrom = $from.' <'.$efrom.'>';
  } else {
	$emailfrom = $efrom;
  }

  my $emailto;
  my ($to, $eto) = $email->{to} =~ /^(.*?)<(.*?)>/ ? ($1, $2) : $email->{to} =~ /<(.*?)>/ ? ('',$1) : ('',$email->{to});
  if ( $to ) {
	$to = MIME::Base64::encode($to);
	$to =~ s/\s+$//si;
	$to = '=?koi8-r?B?'.$to.'?=';
	$emailto = $to.' <'.$eto.'>';
  } else {
	$emailto = $eto;
  }
  my $ccmail;
  if ( exists $email->{cc} && ref $email->{cc} eq 'ARRAY' ) {
	foreach my $cc ( @{ $email->{cc} } ) {
		my ($cce, $ecce) = $cc =~ /^(.*?)<(.*?)>/ ? ($1, $2) : $cc =~ /<(.*?)>/ ? ('',$1) : ('',$cc);
		$cc = $ecce;
	}
	$ccmail = join ', ', @{$email->{cc}};
  } elsif ( exists $email->{cc} && $email->{cc} ) {
	my ($cce, $ecce) = $email->{cc} =~ /^(.*?)<(.*?)>/ ? ($1, $2) : $email->{cc} =~ /<(.*?)>/ ? ('',$1) : ('',$email->{cc});
	$ccmail = $ecce;
  }


  my $body = $email->{body};
  warn Dumper($email);
  my $dt = Contenido::DateTime->new;
  $dt->set_locale('en_EN');
  my $pdate = $dt->strftime("%a, %d %b %Y %H:%M:%S %z");
  my $msg = MIME::Lite->new(
		To      => $emailto,
		From	=> $emailfrom,
		$ccmail ? ( Cc => $ccmail ) : (),
		Subject => $subject,
#		Encoding=> 'binary',
		Date	=> $pdate,
		Type	=> ($etype eq 'mixed' ? 'multipart/mixed' : $etype eq 'related' ? 'multipart/related;type="multipart/alternative";charset="koi8-r"' : $etype),
	);
  $msg->attach(
		'Type' => 'text/html;charset="koi8-r"',
		'Data' => $body,
		'Disposition'	=> '',
	);

  $msg->send();

</%init>

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

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

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

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

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