что ты хотел этим сказать?
я написал рядом PL/Perl
не знаю я что это по твоему, но там можно использовать свои классы
Код: Выделить всё
CREATE FUNCTION ca (bigint, character varying, character varying, character varying, bigint) RETURNS character varying
AS $_X$
use strict;
use POSIX;
use Sys::Hostname;
use MIME::Lite;
use MIME::QuotedPrint;
my ($user,$from,$to,$subj,$tmpl)=@_;
my $key=join'',map $$_[rand@$_],([0..9,'a'..'f'])x32;
my $url="http://www..ru/с/$key/";
my $date = POSIX::strftime("%Y-%m-%d %H:%M:%S", localtime);
my $hostname = hostname;
my $parts=spi_exec_query(<<SQL);
select template, subject, type
from email_templates
where id = $tmpl
SQL
my $_tmpl = $parts->{rows}[0]{template};
my $_subj = $parts->{rows}[0]{subject};
for($_tmpl,$_subj){
s/__FROM__/$from/g;
s/__TO__/$to/g;
s/__KEY__/$key/g;
s/__SUBJ__/$subj/g;
s/__SUBJ~(\d+)__/substr($subj,0,$1)/ge;
s/__DATE__/$date/g;
s/__HOSTNAME__/$hostname/g;
s/__URL__/$url/g;
}
utf8::encode $_ for $_tmpl,$_subj;
for($to){my$x;
/</ ? s/<.*?\@/<mail.robot\@/
: s/^.*?\@/mail.robot\@/;
s/^(.*?)</utf8::encode $x=$1;'=?utf-8?Q?'.encode_qp($x,'').'?= <'/e;
}
my $mail = MIME::Lite->new(
From => $to,
To => $from,
Subject => '=?utf-8?Q?'.encode_qp($_subj,'').'?=',
Encoding => 'base64',
Type => 'text/plain; charset=utf-8',
Data => $_tmpl,
);
$mail->send;
return $key;
$_X$
LANGUAGE plperlu;
там написано что оно динамически через Си API загружает perl
pgSQL - это тоже не PostgreSQL, это прогармма на Си
