Comment envoyer des notifications par e-mail depuis MySQL 5.1
Dans ce guide, nous explorerons comment envoyer des notifications par e-mail depuis MySQL 5.1 lors de l'insertion de nouvelles lignes dans un tableau. La liste des destinataires sera générée dynamiquement sur la base d'une instruction select.
Utilisation du service SMTP
Si vous disposez d'un service SMTP actif, vous pouvez utiliser la commande "outfile" pour envoyer des e-mails. Cela implique la création d'un fichier dans le répertoire de dépôt SMTP, qui est ensuite traité par le service SMTP. Cependant, cette méthode peut entraîner des noms de fichiers en double avec un volume élevé, mais des techniques existent pour atténuer ce problème.
Création d'une fonction définie par l'utilisateur (UDF)
Alternativement, vous pouvez créer un UDF (User-Defined Function) pour gérer l'envoi d'e-mails. Voici une solution de déclenchement simple qui illustre cette approche :
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;
Ce déclencheur crée un fichier temporaire contenant le message électronique, qui est ensuite récupéré par le service SMTP.
Mark Haut du corps de l'e-mail
Pour formater le corps de l'e-mail en HTML, vous pouvez utiliser une fonction comme suivant :
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 ;
Cette fonction peut être appelée pour formater le corps de l'e-mail avec les balises HTML appropriées.
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!