Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Menghantar Pemberitahuan E-mel Dinamik daripada MySQL 5.1 Menggunakan Pencetus dan UDF?

Bagaimana untuk Menghantar Pemberitahuan E-mel Dinamik daripada MySQL 5.1 Menggunakan Pencetus dan UDF?

Susan Sarandon
Susan Sarandonasal
2024-12-04 06:25:14215semak imbas

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

Cara Menghantar Pemberitahuan E-mel daripada MySQL 5.1

Apabila baris baharu dimasukkan ke dalam jadual, anda bertujuan untuk menghantar e-mel kepada berbilang penerima ditentukan secara dinamik melalui pernyataan pilih. Selain itu, anda menghadapi had dengan sistem pemberitahuan e-mel yang telah ditetapkan oleh Navicat.

Menggunakan SMTP dan OUTFILE

Jika perkhidmatan SMTP sedang berjalan, anda boleh menggunakan kata kunci OUTFILE untuk menulis badan e-mel ke direktori drop. Walau bagaimanapun, pendekatan ini mungkin menghasilkan nama fail pendua jika anda mempunyai volum yang tinggi.

Penyelesaian UDF

Pilihan lain ialah mencipta Fungsi Ditentukan Pengguna (UDF). Berikut ialah contoh penyelesaian pencetus:

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;

Menandai Badan E-mel

Untuk memformat badan e-mel untuk kandungan HTML dengan betul, gunakan fungsi seperti ini:

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;

Atas ialah kandungan terperinci Bagaimana untuk Menghantar Pemberitahuan E-mel Dinamik daripada MySQL 5.1 Menggunakan Pencetus dan UDF?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn