Heim > Datenbank > MySQL-Tutorial > Wie sende ich E-Mail-Benachrichtigungen von MySQL 5.1 mithilfe von Triggern und benutzerdefinierten Funktionen?

Wie sende ich E-Mail-Benachrichtigungen von MySQL 5.1 mithilfe von Triggern und benutzerdefinierten Funktionen?

Susan Sarandon
Freigeben: 2024-12-16 00:45:09
Original
692 Leute haben es durchsucht

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

So senden Sie E-Mail-Benachrichtigungen von MySQL 5.1

In dieser Anleitung erfahren Sie, wie Sie beim Einfügen E-Mail-Benachrichtigungen von MySQL 5.1 senden neuer Zeilen in eine Tabelle. Die Empfängerliste wird dynamisch basierend auf einer Select-Anweisung generiert.

Verwendung des SMTP-Dienstes

Wenn Sie einen aktiven SMTP-Dienst haben, können Sie den Befehl „outfile“ verwenden um E-Mails zu versenden. Dabei wird eine Datei im SMTP-Ablageverzeichnis erstellt, die dann vom SMTP-Dienst verarbeitet wird. Diese Methode kann jedoch zu doppelten Dateinamen mit hohem Volumen führen, es gibt jedoch Techniken, um dieses Problem zu entschärfen.

Erstellen einer benutzerdefinierten Funktion (UDF)

Alternativ: Sie können eine UDF (User-Defined Function) für den E-Mail-Versand erstellen. Hier ist eine einfache Triggerlösung, die diesen Ansatz demonstriert:

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;
Nach dem Login kopieren

Dieser Trigger erstellt eine temporäre Datei mit der E-Mail-Nachricht, die dann vom SMTP-Dienst erfasst wird.

Mark Nach oben E-Mail-Text

Um den E-Mail-Text in HTML zu formatieren, können Sie eine Funktion wie die verwenden Folgendes:

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 ;
Nach dem Login kopieren

Diese Funktion kann aufgerufen werden, um den E-Mail-Text mit entsprechenden HTML-Tags zu formatieren.

Das obige ist der detaillierte Inhalt vonWie sende ich E-Mail-Benachrichtigungen von MySQL 5.1 mithilfe von Triggern und benutzerdefinierten Funktionen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage