Index: openacs-4/packages/acs-mail-lite/acs-mail-lite.info =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-mail-lite/acs-mail-lite.info,v diff -u -N --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/acs-mail-lite/acs-mail-lite.info 4 May 2002 18:27:52 -0000 1.1 @@ -0,0 +1,37 @@ + + + + + ACS Mail Lite + ACS Mail Lite + f + t + + + + oracle + postgresql + + Eric Lorenzo + Simplified reliable email transmission. + This package provides a simple ns_sendmail-like interface for sending messages, but queues messages in the database to ensure reliable sending and make sending a message 'transactional'. + + + + + + + + + + + + + + + + + + + + Index: openacs-4/packages/acs-mail-lite/sql/oracle/acs-mail-lite-create.sql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-mail-lite/sql/oracle/acs-mail-lite-create.sql,v diff -u -N --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/acs-mail-lite/sql/oracle/acs-mail-lite-create.sql 4 May 2002 18:27:52 -0000 1.1 @@ -0,0 +1,20 @@ +-- +-- A simple mail queue +-- +-- @author eric@openforce.net +-- @version $Id: acs-mail-lite-create.sql,v 1.1 2002/05/04 18:27:52 yon Exp $ +-- + +create sequence acs_mail_lite_id_seq; + +create table acs_mail_lite_queue ( + message_id integer + constraint acs_mail_lite_queue_pk + primary key, + to_addr varchar(200), + from_addr varchar(200), + subject varchar(200), + body clob, + extra_headers clob, + bcc clob +); Index: openacs-4/packages/acs-mail-lite/sql/oracle/acs-mail-lite-drop.sql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-mail-lite/sql/oracle/acs-mail-lite-drop.sql,v diff -u -N --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/acs-mail-lite/sql/oracle/acs-mail-lite-drop.sql 4 May 2002 18:27:52 -0000 1.1 @@ -0,0 +1,9 @@ +-- +-- A simple mail queue +-- +-- @author eric@openforce.net +-- @version $Id: acs-mail-lite-drop.sql,v 1.1 2002/05/04 18:27:52 yon Exp $ +-- + +drop table acs_mail_lite_queue; +drop sequence acs_mail_lite_id_seq; Index: openacs-4/packages/acs-mail-lite/sql/postgresql/acs-mail-lite-create.sql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-mail-lite/sql/postgresql/acs-mail-lite-create.sql,v diff -u -N --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/acs-mail-lite/sql/postgresql/acs-mail-lite-create.sql 4 May 2002 18:27:52 -0000 1.1 @@ -0,0 +1,20 @@ +-- +-- A simple mail queue +-- +-- @author eric@openforce.net +-- @version $Id: acs-mail-lite-create.sql,v 1.1 2002/05/04 18:27:52 yon Exp $ +-- + +create sequence acs_mail_lite_id_seq; + +create table acs_mail_lite_queue ( + message_id integer + constraint acs_mail_lite_queue_pk + primary key, + to_addr varchar(200), + from_addr varchar(200), + subject varchar(200), + body text, + extra_headers text, + bcc text +); Index: openacs-4/packages/acs-mail-lite/sql/postgresql/acs-mail-lite-drop.sql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-mail-lite/sql/postgresql/acs-mail-lite-drop.sql,v diff -u -N --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/acs-mail-lite/sql/postgresql/acs-mail-lite-drop.sql 4 May 2002 18:27:52 -0000 1.1 @@ -0,0 +1,9 @@ +-- +-- A simple mail queue +-- +-- @author eric@openforce.net +-- @version $Id: acs-mail-lite-drop.sql,v 1.1 2002/05/04 18:27:52 yon Exp $ +-- + +drop table acs_mail_lite_queue; +drop sequence acs_mail_lite_id_seq; Index: openacs-4/packages/acs-mail-lite/tcl/acs-mail-lite-init.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-mail-lite/tcl/acs-mail-lite-init.tcl,v diff -u -N --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/acs-mail-lite/tcl/acs-mail-lite-init.tcl 4 May 2002 18:27:52 -0000 1.1 @@ -0,0 +1,12 @@ +ad_library { + + initialization for acs_mail_lite module + + @author Eric Lorenzo (eric@openforce.net) + @creation-date 22 March, 2002 + @version $Id: acs-mail-lite-init.tcl,v 1.1 2002/05/04 18:27:52 yon Exp $ + +} + +# Default interval is 1 minute. +ad_schedule_proc -thread t 60 acs_mail_lite::sweeper Index: openacs-4/packages/acs-mail-lite/tcl/acs-mail-lite-procs-oracle.xql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-mail-lite/tcl/acs-mail-lite-procs-oracle.xql,v diff -u -N --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/acs-mail-lite/tcl/acs-mail-lite-procs-oracle.xql 4 May 2002 18:27:52 -0000 1.1 @@ -0,0 +1,38 @@ + + + + oracle8.1.6 + + + + insert into acs_mail_lite_queue + (message_id, to_addr, from_addr, subject, body, extra_headers, bcc) + values + (acs_mail_lite_id_seq.nextval, :to, :from, :subject, :body, :eh_list, :bcc) + + + + + + + select message_id, + to_addr, + from_addr, + subject, + body, + extra_headers, + bcc + from acs_mail_lite_queue + + + + + + + delete + from acs_mail_lite_queue + where message_id = :message_id + + + + Index: openacs-4/packages/acs-mail-lite/tcl/acs-mail-lite-procs-postgresql.xql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-mail-lite/tcl/acs-mail-lite-procs-postgresql.xql,v diff -u -N --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/acs-mail-lite/tcl/acs-mail-lite-procs-postgresql.xql 4 May 2002 18:27:52 -0000 1.1 @@ -0,0 +1,38 @@ + + + + postgresql7.1 + + + + insert into acs_mail_lite_queue + (message_id, to_addr, from_addr, subject, body, extra_headers, bcc) + values + (nextval('acs_mail_lite_id_seq'), :to, :from, :subject, :body, :eh_list, :bcc) + + + + + + + select message_id, + to_addr, + from_addr, + subject, + body, + extra_headers, + bcc + from acs_mail_lite_queue + + + + + + + delete + from acs_mail_lite_queue + where message_id = :message_id + + + + Index: openacs-4/packages/acs-mail-lite/tcl/acs-mail-lite-procs.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-mail-lite/tcl/acs-mail-lite-procs.tcl,v diff -u -N --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/acs-mail-lite/tcl/acs-mail-lite-procs.tcl 4 May 2002 18:27:52 -0000 1.1 @@ -0,0 +1,46 @@ +ad_library { + + Provides a simple API for reliably sending email. + + @author Eric Lorenzo (eric@openforce.net) + @date 22 March 2002 + @version $Id: acs-mail-lite-procs.tcl,v 1.1 2002/05/04 18:27:52 yon Exp $ + +} + +namespace eval acs_mail_lite { + + ad_proc -public send { + {-to:required} + {-from:required} + {-subject ""} + {-body:required} + {-extraheaders ""} + {-bcc ""} + } { + Reliably send an email message. + } { + if {![empty_string_p $extraheaders]} { + set eh_list [util_ns_set_to_list $extraheaders] + } else { + set eh_list "" + } + + db_dml create_queue_entry {} + } + + + ad_proc -private sweeper {} { + Send messages in the acs_mail_lite_queue table. + } { + db_foreach get_queued_messages {} { + set eh [util_list_to_ns_set $extra_headers] + if {[catch {ns_sendmail $to_addr $from_addr $subject $body $eh $bcc} errmsg]} { + ns_log Error "ns_sendmail failed: $errmsg" + } else { + db_dml delete_queue_entry {} + } + } + } + +}