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 {}
+ }
+ }
+ }
+
+}