Dav*_*nez 24 mysql email notifications navicat
我正在尝试在将新行插入表格时向多个收件人发送电子邮件.收件人列表各不相同.我希望能够使用select语句设置此列表.我也安装了Navicat,它允许我发送电子邮件通知,但仅限于预定的一组人.
谢谢.
小智 27
如果您正在运行SMTP服务,则可以outfile到drop目录.如果您的音量很高,则可能会导致文件名重复,但有一些方法可以避免这种情况.
否则,您将需要创建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;
Run Code Online (Sandbox Code Playgroud)
要标记邮件正文,您需要这样的内容......
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 ;
Run Code Online (Sandbox Code Playgroud)
Jim*_*ard 26
我会非常担心在我的数据库服务器上发送电子邮件的负载(虽然可能很小).我可能会建议其中一种替代方案:
我同意Jim Blizard的观点.数据库不是应该发送电子邮件的技术堆栈的一部分.例如,如果您发送电子邮件然后回滚触发该电子邮件的更改,该怎么办?你不能收回电子邮件.
在您的应用确认已成功并提交SQL更改后,最好在应用程序代码层中发送电子邮件.
| 归档时间: |
|
| 查看次数: |
91224 次 |
| 最近记录: |