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 dynamiques par e-mail depuis MySQL 5.1 à l'aide de déclencheurs et d'UDF ?

Susan Sarandon
Susan Sarandonoriginal
2024-12-04 06:25:14209parcourir

How to Send Dynamic Email Notifications from MySQL 5.1 Using Triggers and UDFs?

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!

Déclaration:
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