2012-07-08 89 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的可以從數據庫內執行的電子郵件應用程序。但是這可能會引發一些安全問題。 (通常,除了備份/轉儲期間,我的數據庫不會寫入文件系統,而且它們也不會與電子郵件進行交互。)請思考如果某些管理員更新表中的每一行,您希望發生什麼情況。 (大多數情況下,該管理員會是你。)

就個人而言,我不認爲我會用郵件此。這是(恕我直言)每天最多隻能獲得管理員注意的事情。爲此,我可能會首先嚐試顯示管理員上次訪問後發生更改的網頁。

相關問題