2012-07-08 85 views
0

有没有一种方法可以配置在将新数据添加到MySQL数据库时发送的自动电子邮件。最好在PHP中。更新数据库时自动发送给管理员的电子邮件

的想法是,当新的信息被提交到数据库的电子邮件自动生成含有链接的新信息网上查看信息并发送到预先配置的E-mail地址。

这是用于假期预订系统的目的。同事将能够提交假期的日期和时间,并且在添加或更改时自动通知团队经理。

我一直在使用Word新闻尝试,但它过于笨重,很多更强大的比我更需要。我在Stack Flow中也注意到了另外两个问题,但他们没有答案或答案,也没有严格相同的问题。

任何帮助将不胜感激。

+0

添加命令发送E-Mail将是微不足道的插入:http://www.php.net/manual/en/function.mail.php如果你不想从头开始写它,你需要找到正确的应用程序,这是任务的* rest *。 ..不确定电子邮件要求是否是从 – 2012-07-08 21:56:39

+0

开始的正确方法?您是否设置了电子邮件功能? – 2012-07-08 21:57:29

+0

你有使用PHP的技巧吗? – 2012-07-08 21:57:40

回答

0

如果你有一个SMTP服务运行,您可以OUTFILE到投递目录。如果音量很高,可能会导致重复的文件名,但有一些方法可以避免这种情况。

否则,您将需要创建一个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 ; 
0

我可能会先尝试php mail() function

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

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

就个人而言,我不认为我会用邮件此。这是(恕我直言)每天最多只能获得管理员注意的事情。为此,我可能会首先尝试显示管理员上次访问后发生更改的网页。

相关问题