0

新しいデータがMySQLデータベースに追加されたときに送信される自動電子メールを構成する方法はありますか?できればPHPで。

新しい情報がDBに送信されると、オンラインで情報を表示するためのリンクを含む新しい情報を含む電子メールが自動的に生成され、事前に構成された電子メールアドレスに送信されます。

これの目的は、休暇予約システムです。同僚は休暇の日時を送信できるようになり、チームマネージャーは、休暇が追加または変更されたときに自動的に通知されます。

私はWordPressを使ってみましたが、それはあまりにも不格好で、必要以上に強力です。スタックフローに関する別のいくつかの質問にも注意しましたが、それらには応答や回答がなく、厳密に同じ質問ではありません。

どんな助けでも大歓迎です。

4

2 に答える 2

0

私は最初にphpmail()関数を試すかもしれません。

それで十分かどうかは、アプリケーションによって異なります。たとえば、システム管理者は、dbmsのネイティブコマンドラインプログラムを使用して、任意のデータベースを更新できます。また、GUIユーティリティ、またはExcel(多分)のようなものを使用して、phpがまったく表示しない更新を行うこともできます。その場合、それらの変更に関するメールは表示されません。

少なくとも一部のdbmsは、データベース内から電子メールアプリケーションを実行できます。しかし、それはいくつかのセキュリティ問題を引き起こす可能性があります。(原則として、私のデータベースはバックアップ/ダンプ中を除いてファイルシステムに書き込みません。また、データベースは電子メールと相互作用しません。)管理者がテーブルのすべての行を更新した場合に何をしたいかを考えてください。(ほとんどの場合、その管理者はあなたになります。)

個人的には、これにメールを使うことはないと思います。これは、(IMHO)が管理者の注意を引くのはせいぜい1日1回だけであるべきものです。そのためには、おそらく最初に、管理者が最後にアクセスしてからの変更を示すWebページを試してみます。

于 2012-07-08T22:11:44.760 に答える
0

SMTPサービスを実行している場合は、ドロップディレクトリにアウトファイルできます。ボリュームが大きい場合、ファイル名が重複する可能性がありますが、それを回避する方法があります。

それ以外の場合は、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;

メッセージ本文をマークアップするには、次のようなものが必要になります...

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 ;
于 2012-07-10T08:42:59.760 に答える