Maison > base de données > tutoriel mysql > Comment envoyer des notifications par e-mail depuis MySQL 5.1 à l'aide de déclencheurs et de fonctions définies par l'utilisateur ?

Comment envoyer des notifications par e-mail depuis MySQL 5.1 à l'aide de déclencheurs et de fonctions définies par l'utilisateur ?

Susan Sarandon
Libérer: 2024-12-16 00:45:09
original
692 Les gens l'ont consulté

How to Send Email Notifications from MySQL 5.1 Using Triggers and User-Defined Functions?

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;
Copier après la connexion

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 ;
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal