如何从 MySQL 5.1 发送电子邮件通知
当将新行插入表中时,您的目标是将电子邮件发送给多个收件人通过 select 语句动态确定。此外,您会遇到 Navicat 预定电子邮件通知系统的限制。
使用 SMTP 和 OUTFILE
如果 SMTP 服务正在运行,您可以使用 OUTFILE 关键字来编写通过电子邮件将正文发送到放置目录。但是,如果容量很大,此方法可能会导致文件名重复。
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;
标记电子邮件正文
要正确格式化 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;
以上是如何使用触发器和 UDF 从 MySQL 5.1 发送动态电子邮件通知?的详细内容。更多信息请关注PHP中文网其他相关文章!