数据库更新时自动向管理员发送电子邮件


Automatic E-Mail to Admin when Database is Updated

有没有办法配置在将新数据添加到MySQL数据库时发送的自动电子邮件。最好是PHP。

这个想法是,当新信息提交到数据库时,会自动生成一封电子邮件,其中包含新信息以及用于在线查看信息的链接,并发送到预先配置的电子邮件地址。

这样做的目的是为了休假预订系统。同事将能够提交休假日期和时间,并且团队经理会在添加或更改时自动通知他们。

我尝试过使用Word Press,但它太笨重了,而且比我需要的要强大得多。我还注意到了关于堆栈流的另外几个问题,但它们没有答案或答案,也不是严格意义上的问题。

任何帮助将不胜感激。

如果正在运行 SMTP 服务,则可以将文件输出到投递目录。如果您的音量很大,则可能会导致文件名重复,但有一些方法可以避免这种情况。

否则,您将需要创建 UDF。

下面是一个示例触发器解决方案:

 CREATE TRIGGER test.autosendfromdrop BEFORE INSERT ON test.emaildrop
 FOR EACH ROW BEGIN
  /* START THE WRITING OF THE EMAIL FILE HERE*/      
  SELECT  concat("To: ",NEW.To),
          concat("From: ",NEW.From),
          concat("Subject: ",NEW.Subject),
          NEW.Body
      INTO OUTFILE 
               "C:''inetpub''mailroot''pickup''mail.txt" 
          FIELDS TERMINATED by ''r'n' ESCAPED BY '';            
    END;

要标记消息正文,您将需要这样的东西...

CREATE FUNCTION `HTMLBody`(Msg varchar(8192)) 
RETURNS varchar(17408) CHARSET latin1 DETERMINISTIC
BEGIN
declare tmpMsg varchar(17408);
set tmpMsg = cast(concat(
  'Date: ',date_format(NOW(),'%e %b %Y %H:%i:%S -0600'),''r'n',
  'MIME-Version: 1.0',''r'n',
  'Content-Type: multipart/alternative;',''r'n',
  ' boundary='"----=_NextPart_000_0000_01CA4B3F.8C263EE0'"',''r'n',
  'Content-Class: urn:content-classes:message',''r'n',
  'Importance: normal',''r'n',
  'Priority: normal',''r'n','',''r'n','',''r'n',
  'This is a multi-part message in MIME format.',''r'n','',''r'n',
  '------=_NextPart_000_0000_01CA4B3F.8C263EE0',''r'n',
  'Content-Type: text/plain;',''r'n',
  '  charset='"iso-8859-1'"',''r'n',
  'Content-Transfer-Encoding: 7bit',''r'n','',''r'n','',''r'n',
  Msg,
  ''r'n','',''r'n','',''r'n',
  '------=_NextPart_000_0000_01CA4B3F.8C263EE0',''r'n',
  'Content-Type: text/html',''r'n',
  'Content-Transfer-Encoding: 7bit',''r'n','',''r'n',
  Msg,
  ''r'n','------=_NextPart_000_0000_01CA4B3F.8C263EE0--'
  ) as char);
 RETURN tmpMsg;
 END ;

我可能会先尝试php mail()函数。

这是否足够取决于应用程序。例如,系统管理员可以使用 dbms 的本机命令行程序更新我的任何数据库。他们还可以使用GUI实用程序,甚至像Excel之类的东西(也许)来执行php根本看不到的更新。如果发生这种情况,您将不会看到有关这些更改的任何电子邮件。

至少有一些 dbms 可以从数据库中执行电子邮件应用程序。但这可能会引发一些安全问题。(通常,我的数据库不会写入文件系统,除非在备份/转储期间,并且它们不与电子邮件交互。考虑一下如果某些管理员更新表中的每一行,您希望发生什么情况。 (大多数情况下,该管理员将是您。

就个人而言,我认为我不会为此使用电子邮件。这是(恕我直言)最多每天只吸引管理员注意力一次的事情。为此,我可能会首先尝试显示自管理员上次访问以来更改的网页。

相关文章: