Maison >base de données >tutoriel mysql >Comment envoyer des notifications dynamiques par e-mail depuis MySQL 5.1 à l'aide de déclencheurs et d'UDF ?
Comment envoyer des notifications par e-mail depuis MySQL 5.1
Lorsqu'une nouvelle ligne est insérée dans un tableau, vous souhaitez envoyer des e-mails à plusieurs destinataires déterminé dynamiquement via une instruction select. De plus, vous rencontrez des limitations avec le système de notification par e-mail prédéterminé de Navicat.
Utilisation de SMTP et OUTFILE
Si un service SMTP est en cours d'exécution, vous pouvez utiliser le mot-clé OUTFILE pour écrire le envoyer le corps de l'e-mail dans un répertoire de dépôt. Cependant, cette approche peut entraîner des noms de fichiers en double si vous avez un volume élevé.
Solution UDF
Une autre option consiste à créer une fonction définie par l'utilisateur (UDF). Voici un exemple de solution de déclenchement :
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;
Marquage du corps de l'e-mail
Pour formater correctement le corps de l'e-mail pour le contenu HTML, utilisez une fonction comme celle-ci :
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;
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!