我在使用pgsql设置触发器时更新表数据集(将状态更改为已完成) 它会使用数据集电子邮件值自动向电子邮件帐户发送电子邮件,并将此电子邮件保存在服务器
中但我不知道如何写入触发功能来发送电子邮件,并在服务器中发送电子邮件。 提前谢谢
Pg版本为9.1,CentOS 5.8
CREATE OR REPLACE FUNCTION sss()
RETURNS trigger AS
$BODY$begin
if(NEW.publisher== 'aaaa')
then
//send email and save to server 192.168.171.64
end if;
return NEW;
end
$BODY$
LANGUAGE plpgsql VOLATILE
COST 100;
ALTER FUNCTION sss()
OWNER TO postgres;
GRANT EXECUTE ON FUNCTION sss() TO postgres;
答案 0 :(得分:2)
如果是postgres超级用户,这将在Windows上运行。触发功能应该是SECURITY DEFINER。类似于Linux上的sendmail:
...
copy
( select 'my email body' )
to program
'blat -to to@example.com -from from@example.com -subject "My Subject" -server localhost:25'
with (
format text
);
...
~60 ms
答案 1 :(得分:1)
您可以使用plperlu发送邮件。
This链接显示了如何在触发器上使用它的示例。
答案 2 :(得分:1)
您可以使用pgMail(如果您可以安装它):
如果您按照brandolabs.com上的说明进行操作,请转到
pgmail('Send From ','Send To ','Subject goes here','Message body here.')
答案 3 :(得分:0)
我同意@Craig Ringer。您可以使用100行代码在Python中编写代码。我建议使用以下Python库:psycopg2,smtplib。根据您希望获得更改通知的频率,您可以运行cronjob(取决于您的工作环境)。这样,您可以将对数据库的多个更改聚合到一个电子邮件中,而不是每次发生更改时都发送通知。