可能重复:
psql 触发器发送电子邮件
我使用 PL/Perl 语言在 Postgresql 中发送邮件。当数据集表upload_status更改为已发布时,它会向数据集表中作者的电子邮件地址发送邮件。并且在信中包含该作者在数据集中的一些记录。数据集 PK 是标识符。
比如从 xx@mail.com 发送到 (dataset.email)@mail.com
亲爱的博士(dataset.author)
你的......(dataset.product)已经......
那么如何使用 PL/Perl 和触发函数编写函数。
谢谢,我使用这种方法http://evilrouters.net/2008/02/01/send-email-from-postgresql/
mydb=# CREATE OR REPLACE FUNCTION mydb_mytable_insert_send_mail_function()
mydb-# RETURNS "trigger" AS
mydb-# $BODY$
mydb$# use Mail::Sendmail;
mydb$#
mydb$# $message = "A new entry has been added to the 'mytable' table.\n\n";
mydb$# $message .= "The new name is: $_TD->{new}{name}\n\n";
mydb$#
mydb$# %mail = ( From => $_[0], To => $_[1], Subject => $_[2], Message => $message);
mydb$#
mydb$# sendmail(%mail) or die $Mail::Sendmail::error;
mydb$# return undef;
mydb$# $BODY$
mydb-# LANGUAGE 'plperlu' VOLATILE;
mydb=# CREATE TRIGGER mydb_mytable_insert_send_mail_trigger
mydb=# AFTER INSERT ON mytable
mydb=# FOR EACH ROW
mydb=# EXECUTE PROCEDURE mydb_mytable_insert_send_mail_function('from@domain.com', 'to@domain.com', 'subject here');
但它显示发生错误 Can't locate Mail/Sendmail.pm in @INC(@INC contains: /usr/...