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

Bagaimana untuk Menghantar Pemberitahuan E-mel daripada MySQL 5.1 Menggunakan Pencetus dan Fungsi Ditetapkan Pengguna?

Susan Sarandon
Susan Sarandonasal
2024-12-16 00:45:09698semak imbas

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

Cara Menghantar Pemberitahuan E-mel daripada MySQL 5.1

Dalam panduan ini, kami akan meneroka cara menghantar pemberitahuan e-mel daripada MySQL 5.1 semasa pemasukan baris baharu ke dalam jadual. Senarai penerima akan dijana secara dinamik berdasarkan pernyataan pilihan.

Menggunakan Perkhidmatan SMTP

Jika anda mempunyai perkhidmatan SMTP yang aktif, anda boleh menggunakan arahan "outfile" untuk menghantar e-mel. Ia melibatkan mencipta fail dalam direktori drop SMTP, yang kemudiannya diproses oleh perkhidmatan SMTP. Walau bagaimanapun, kaedah ini mungkin menghasilkan nama fail pendua dengan volum yang tinggi, tetapi teknik wujud untuk mengurangkan isu ini.

Mencipta Fungsi Ditentukan Pengguna (UDF)

Sebagai alternatif, anda boleh mencipta UDF (Fungsi Ditentukan Pengguna) untuk mengendalikan penghantaran e-mel. Berikut ialah penyelesaian pencetus mudah yang menunjukkan pendekatan ini:

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;

Pencetus ini mencipta fail sementara yang mengandungi mesej e-mel, yang kemudiannya diambil oleh perkhidmatan SMTP.

Tandai Badan E-mel Atas

Untuk memformat badan e-mel dalam HTML, anda boleh menggunakan fungsi seperti berikut:

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 ;

Fungsi ini boleh dipanggil untuk memformat badan e-mel dengan teg HTML yang sesuai.

Atas ialah kandungan terperinci Bagaimana untuk Menghantar Pemberitahuan E-mel daripada MySQL 5.1 Menggunakan Pencetus dan Fungsi Ditetapkan Pengguna?. 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