2017-07-11 125 views
0

我在网络上搜索了数据库中的电子邮件触发器。是的,我发现很多使用触发器发送电子邮件的网站。然而,大多数的网站只是教人们使用SQL服务器触发器...是否可以使用MySQL触发器发送电子邮件?

但我目前正在使用phpmyadmin(MySQL),我已经在MySQL中应用这些方法,但它不起作用。

我的问题很简单:我怎样才能让触发器发送一个电子邮件在phpmyadmin(MySQL)?

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

下面的代码仅在SQL服务器中使用:

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 = '[email protected]', 
      @profile_name = 'default', 
      @subject = 'Someone was speeding', 
      @body = 'Yep, they sure were.'; 
    END 
END 
GO 
+0

到目前为止你做了什么?显示您的代码/触发器... – Jadeye

+0

检查上面更新的问题。 –

+0

最好的做法是将它存储到一张桌子上并制作一个小程序来检查表格并定期发送 –

回答

1

你真的不能。

此功能不存在。技术上......如果你知道如何从命令行发送电子邮件,你可以想象使用lib_mysqludf_sys从触发器产生一个shell并发送邮件,但是这个代码是旧的,似乎没有维护。正如我记得的那样,编译有点棘手,可能有点不稳定。

如果你知道如何在C代码,你可以编写自己的UDF。

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

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

相关问题