是否可以发送带有MySQL触发器的电子邮件?

时间:2017-07-11 05:19:13

标签: php mysql email

我在网络上搜索了数据库中的电子邮件触发器。是的,我找到了很多使用触发器发送电子邮件的网站。但是,大多数网站只是教人们使用SQL服务器触发器......

但我目前正在使用phpmyadmin(MySQL),我已经在MySQL中应用了这些方法,但它没有用。

我的问题很简单:如何触发a在phpmyadmin(MySQL)中发送电子邮件?

有人说PhpMyAdmin不支持这种开箱即用的功能。您需要访问MySql服务器才能创建UDF以发送实际的电子邮件。 从这里开始:Check this out.

以下代码仅用于SQL-server:

CREATE TRIGGER leave_system.email ON leave_system.leave_request
FOR INSERT
AS
BEGIN
    SET NOCOUNT ON;

    IF EXISTS (SELECT day_in_advance FROM leave_request WHERE day_in_advance <= 0)
    BEGIN
        EXEC msdb.dbo.sp_send_dbmail
          @recipients = 'whoever@yourcompany.com', 
          @profile_name = 'default',
          @subject = 'Someone was speeding', 
          @body = 'Yep, they sure were.';
    END
END
GO

1 个答案:

答案 0 :(得分:1)

你真的不能。

此功能不存在。

技术上......如果您知道如何从命令行发送电子邮件,您可以设想使用lib_mysqludf_sys从触发器生成shell并发送邮件,但此代码已过时且似乎未维护。我记得,这有点难以编译,也许有点不稳定。

如果您知道如何使用C编写代码,则可以编写自己的UDF。

传统观点认为,触发器并不是发送电子邮件的最佳位置,因为(除其他原因外)如果触发邮件的数据库事务被回滚,邮件显然无法取消发送。

如果您使用的是来自亚马逊的兼容MySQL的数据库引擎Aurora,您可以使用Aurora Lambda integration从触发器发送电子邮件,但此功能仅存在于Aurora中。