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

Wie sende ich dynamische E-Mail-Benachrichtigungen von MySQL 5.1 mithilfe von Triggern und UDFs?

Susan Sarandon
Susan SarandonOriginal
2024-12-04 06:25:14280Durchsuche

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

So senden Sie E-Mail-Benachrichtigungen von MySQL 5.1

Wenn eine neue Zeile in eine Tabelle eingefügt wird, möchten Sie E-Mails an mehrere Empfänger senden dynamisch durch eine Select-Anweisung bestimmt. Darüber hinaus stoßen Sie auf Einschränkungen beim voreingestellten E-Mail-Benachrichtigungssystem von Navicat.

Verwendung von SMTP und OUTFILE

Wenn ein SMTP-Dienst ausgeführt wird, können Sie das Schlüsselwort OUTFILE zum Schreiben verwenden E-Mail-Text in ein Drop-Verzeichnis verschieben. Dieser Ansatz kann jedoch zu doppelten Dateinamen führen, wenn Sie ein hohes Volumen haben.

UDF-Lösung

Eine andere Möglichkeit besteht darin, eine benutzerdefinierte Funktion (UDF) zu erstellen. Hier ist eine Beispiel-Trigger-Lösung:

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;

E-Mail-Text markieren

Um den E-Mail-Text für HTML-Inhalte korrekt zu formatieren, verwenden Sie eine Funktion wie diese:

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;

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

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