如何從MySQL 5.1 發送電子郵件通知
在本指南中,我們將探討如何在插入時從MySQL 5.1 發送電子郵件通知將新行放入表中。收件者清單將根據 select 語句動態產生。
使用 SMTP 服務
如果您有活動的 SMTP 服務,可以使用「outfile」指令傳送電子郵件。它涉及在 SMTP 投遞目錄中建立一個文件,然後由 SMTP 服務處理該文件。但是,此方法可能會導致大量重複檔案名,但存在可以緩解此問題的技術。
建立使用者定義函數 (UDF)
或者,您可以建立一個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;
此觸發器會建立包含電子郵件的臨時文件,然後由 SMTP 服務擷取該文件。
標記向上電子郵件正文
要將電子郵件正文格式化為HTML,您可以使用類似以下的函數以下:
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 ;
可以呼叫此函數以使用適當的HTML 標籤格式化電子郵件正文。
以上是如何使用觸發器和使用者定義函數從 MySQL 5.1 發送電子郵件通知?的詳細內容。更多資訊請關注PHP中文網其他相關文章!