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
Libérer: 2024-12-04 06:25:14
original
343 Les gens l'ont consulté

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

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

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 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