gpt4 book ai didi

postgresql - postgres 中的 sp_send_dbmail 替代方案?发送 Postgres 电子邮件报告的简便方法?

转载 作者:行者123 更新时间:2023-11-29 11:25:31 25 4
gpt4 key购买 nike

SQL Server 在 sp_send_dbmail ( quick guide here ) 中有一个很棒的功能,可以让您通过电子邮件发送报告。 Postgres 中是否存在类似的东西?我的 postgres 托管在 Heroku,因此我可以共享一个数据剪辑,但我想知道是否有一种简单的方法来安排电子邮件发送报告。

最佳答案

您可以使用 pgMail 从 PostgreSQL 中发送邮件。

先决条件:

在使用 pgMail 之前,您必须安装 TCL/u 过程语言。 TCL/u 是一个不受限制的 TCL 版本,您的数据库可以在其存储函数中使用它。在您疯狂地在您的所有数据库中安装不受限制的 TCL 过程语言之前,请考虑到在将 TCL/u 语言添加到您的数据库时您必须准备足够的安全预防措施!对于允许危险用户做坏事的错误配置服务器,我概不负责!

要安装TCL/u 过程语言,您必须已经编译(或使用二进制包)并安装了PostgreSQL 的TCL 扩展。一旦确定已完成此操作,只需以数据库管理员身份在 unix shell 提示符下键入以下内容即可。

# createlang pltclu [YOUR DATABASE NAME]

代替[YOUR DATABASE NAME] , 输入要向其添加存储过程的数据库的名称。如果您希望将它添加到所有新数据库中,请使用“template1”作为您的数据库名称。

在向数据库添加新过程之前,首先执行:

替换文字<ENTER YOUR MAILSERVER HERE>使用您的邮件服务器的完全限定域名。即 mail.server.com。

替换文字<ENTER YOUR DATABASESERVER HERE>使用数据库服务器的完全限定域名。即 db.server.com。

完成上述操作后,您就可以开始了。

这一步之后,使用psql接口(interface)添加pgMail功能。只需复制 pgmail.sql 文件的内容并将其粘贴到您的窗口中。您也可以通过键入以下命令直接从命令行加载它:

# psql -e [YOUR DATABASE NAME] < pgMail.sql

安装存储函数后,只需按如下方式调用过程即可。

select pgmail('Send From ','Send To ','Subject goes here','Plaintext message body here.');

select pgmail('Send From ','Send To ','Subject goes here','','HTML message body here.');

或者现在,多部分 MIME!

select pgmail('Send From ','Send To ', 'Subject goes here','Plaintext message body here.', 'HTML message body here.');

在“发送自”和“发送至”字段中,您可以只包含电子邮件,也可以包含在 <> 中的带有明文名称的电子邮件。

测试您的安装

我提供了一个示例供您尝试。您必须首先用您的真实电子邮件地址替换 example.execute.sql 脚本中的字符串,然后像上面的 pltclu 一样安装 plpgsql 语言。您可以通过输入 createlang [YOUR DATABASE NAME] plpgsql 来做到这一点.

完成后,首先运行 example.setup.sql。然后执行 example.execute.sql 脚本。如果一切正常,您将在邮箱中看到 2 封电子邮件。要删除此示例,请执行 example.cleanup.sql脚本。

SMTP 验证

pgMail 不支持 SMTP 验证。大多数使用它的人要么在数据库服务器上设置本地邮件服务器以进行本地排队,然后使用该设置进行任何所需的中继(使用身份验证)。或者,通常在/etc/mail/access(或等效文件)文件中制定特殊规则,以允许从数据库服务器使用的 IP 进行中继。显然,后一个选项不适用于 GMail。

这背后的部分原因是,对于大型作业,pgMail 的事务性质中的身份验证会出现问题。理想的解决方案是在数据库服务器上放置一个 EXIM 服务器,并将其作为智能中继服务器处理任何类型的身份验证。这是一个链接,其中包含有关 how to set SMTP server up 的更多信息.

文档:http://brandolabs.com/pgmail

关于postgresql - postgres 中的 sp_send_dbmail 替代方案?发送 Postgres 电子邮件报告的简便方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52114625/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com