ホームページ >データベース >mysql チュートリアル >トリガーとユーザー定義関数を使用して MySQL 5.1 から電子メール通知を送信する方法

トリガーとユーザー定義関数を使用して MySQL 5.1 から電子メール通知を送信する方法

Susan Sarandon
Susan Sarandonオリジナル
2024-12-16 00:45:09693ブラウズ

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

MySQL 5.1 から電子メール通知を送信する方法

このガイドでは、挿入時に MySQL 5.1 から電子メール通知を送信する方法について説明します。新しい行をテーブルに追加します。受信者リストは、select ステートメントに基づいて動的に生成されます。

SMTP サービスの使用

アクティブな SMTP サービスがある場合は、「outfile」コマンドを使用できます。電子メールを送信するため。これには、SMTP ドロップ ディレクトリにファイルが作成され、その後 SMTP サービスによって処理されます。ただし、この方法では大量のファイル名が重複する可能性がありますが、この問題を軽減する技術が存在します。

ユーザー定義関数 (UDF) の作成

あるいは、電子メール送信を処理するための UDF (ユーザー定義関数) を作成できます。このアプローチを示す簡単なトリガー ソリューションを次に示します。

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;

このトリガーは、電子メール メッセージを含む一時ファイルを作成し、SMTP サービスによって取得されます。

Mark Up メール本文

メール本文を HTML でフォーマットするには、次のような関数を使用できます。以下:

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 ;

この関数を呼び出して、電子メール本文を適切な HTML タグでフォーマットすることができます。

以上がトリガーとユーザー定義関数を使用して MySQL 5.1 から電子メール通知を送信する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。