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 -r1.25 -r1.26
--- openacs-4/packages/acs-mail-lite/acs-mail-lite.info 17 Dec 2006 17:04:09 -0000 1.25
+++ openacs-4/packages/acs-mail-lite/acs-mail-lite.info 17 Dec 2006 20:11:54 -0000 1.26
@@ -7,7 +7,7 @@
f
t
-
+
Eric Lorenzo
Timo Hentschel
@@ -16,7 +16,7 @@
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'. Prefered over acs-messaging or acs-mail.
0
-
+
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 -r1.6 -r1.7
--- openacs-4/packages/acs-mail-lite/sql/oracle/acs-mail-lite-create.sql 17 Dec 2006 17:04:09 -0000 1.6
+++ openacs-4/packages/acs-mail-lite/sql/oracle/acs-mail-lite-create.sql 17 Dec 2006 20:11:54 -0000 1.7
@@ -80,6 +80,7 @@
cc_addr text,
bcc_addr text,
from_addr text,
+ reply_to text,
subject text,
body text,
package_id integer,
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 -r1.6 -r1.7
--- openacs-4/packages/acs-mail-lite/sql/postgresql/acs-mail-lite-create.sql 17 Dec 2006 17:04:10 -0000 1.6
+++ openacs-4/packages/acs-mail-lite/sql/postgresql/acs-mail-lite-create.sql 17 Dec 2006 20:11:55 -0000 1.7
@@ -78,6 +78,7 @@
cc_addr text,
bcc_addr text,
from_addr text,
+ reply_to text,
subject text,
body text,
package_id integer,
Index: openacs-4/packages/acs-mail-lite/sql/postgresql/upgrade/upgrade-1.3b9-1.3b10.sql
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-mail-lite/sql/postgresql/upgrade/Attic/upgrade-1.3b9-1.3b10.sql,v
diff -u -N
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ openacs-4/packages/acs-mail-lite/sql/postgresql/upgrade/upgrade-1.3b9-1.3b10.sql 17 Dec 2006 20:11:55 -0000 1.1
@@ -0,0 +1 @@
+alter table acs_mail_lite_complex_queue add column reply_to text;
\ No newline at end of file
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 -r1.60 -r1.61
--- openacs-4/packages/acs-mail-lite/tcl/acs-mail-lite-procs.tcl 16 Dec 2006 20:30:40 -0000 1.60
+++ openacs-4/packages/acs-mail-lite/tcl/acs-mail-lite-procs.tcl 17 Dec 2006 20:11:55 -0000 1.61
@@ -282,18 +282,45 @@
parse_email -file $msg -array email
set email(to) [parse_email_address -email $email(to)]
set email(from) [parse_email_address -email $email(from)]
- ns_log Debug "load_mails: message from $email(from) to $email(to)"
+ template::util::list_of_lists_to_array $email(bodies) email_body
+ if {[exists_and_not_null email_body(text/html)]} {
+ set body $email_body(text/html)
+ } else {
+ set body $email_body(text/plain)
+ }
+
+ # Take a look if the email contains an email with a "#"
+ set pot_email [lindex [split $email(to) "@"] 0]
+ if {[string last "#" $pot_email] > -1} {
+ # A match was found, now just forward the email
+ regsub -all {\#} $pot_email {@} to_addr
+ set from_addr [lindex $email(from) 0]
+ regsub -all {@} $from_addr {\#} reply_to
+ set reply_to_addr "${reply_to}@[address_domain]"
+ acs_mail_lite::complex_send \
+ -from_addr $from_addr \
+ -reply_to $reply_to_addr \
+ -to_addr $to_addr \
+ -subject $email(subject) \
+ -body $body \
+ -single_email \
+ -send_immediately
+
+ #let's delete the file now
+ if {[catch {ns_unlink $msg} errmsg]} {
+ ns_log Error "load_mails: unable to delete queued message $msg: $errmsg"
+ } else {
+ ns_log Debug "load_mails: deleted $msg"
+ }
+
+ break
+ }
+
# Now run the simplest mailing list of all
set to_party_id [party::get_by_email -email $email(to)]
-
+
if {[db_string group_p "select 1 from groups where group_id = :to_party_id" -default 0]} {
- template::util::list_of_lists_to_array $email(bodies) email_body
- if {[exists_and_not_null email_body(text/html)]} {
- set body $email_body(text/html)
- } else {
- set body $email_body(text/plain)
- }
acs_mail_lite::complex_send \
-from_addr [lindex $email(from) 0] \
-to_party_ids [group::get_members -group_id $to_party_id] \
@@ -302,9 +329,16 @@
-single_email \
-send_immediately
+ #let's delete the file now
+ if {[catch {ns_unlink $msg} errmsg]} {
+ ns_log Error "load_mails: unable to delete queued message $msg: $errmsg"
+ } else {
+ ns_log Debug "load_mails: deleted $msg"
+ }
+
break
}
-
+
set process_p 1
#check if we have several sites. In this case a site prefix is set
@@ -328,28 +362,29 @@
if {$process_p} {
#check if an implementation exists for the package_prefix and call the callback
-### FIXME!!!!!
-###
-
-
-# if {[db_0or1row select_impl {}]} {
-
- # ns_log Notice "load_mails: Prefix $prefix found. Calling callback implmentation $impl_name for package_id $package_id"
- # callback -impl $impl_name acs_mail_lite::incoming_email -array email -package_id $package_id
-
- # We execute all callbacks now
- callback acs_mail_lite::incoming_email -array email
-
-
-
-# } else {
-# ns_log Notice "load_mails: prefix not found. Doing nothing."
-# }
+ ### FIXME!!!!!
+ ###
-
+
+ # if {[db_0or1row select_impl {}]} {
+
+ # ns_log Notice "load_mails: Prefix $prefix found. Calling callback implmentation $impl_name for package_id $package_id"
+ # callback -impl $impl_name acs_mail_lite::incoming_email -array email -package_id $package_id
+
+ # We execute all callbacks now
+ callback acs_mail_lite::incoming_email -array email
+
+
+
+ # } else {
+ # ns_log Notice "load_mails: prefix not found. Doing nothing."
+ # }
+
+
} else {
ns_log Error "load_mails: Either the SitePrefix setting was incorrect or not registered package prefix '$package_prefix'."
}
+
#let's delete the file now
if {[catch {ns_unlink $msg} errmsg]} {
ns_log Error "load_mails: unable to delete queued message $msg: $errmsg"
Index: openacs-4/packages/acs-mail-lite/tcl/complex-send-procs-oracle.xql
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-mail-lite/tcl/Attic/complex-send-procs-oracle.xql,v
diff -u -N -r1.2 -r1.3
--- openacs-4/packages/acs-mail-lite/tcl/complex-send-procs-oracle.xql 15 Dec 2006 01:37:17 -0000 1.2
+++ openacs-4/packages/acs-mail-lite/tcl/complex-send-procs-oracle.xql 17 Dec 2006 20:11:55 -0000 1.3
@@ -18,6 +18,7 @@
cc_addr,
bcc_addr,
from_addr,
+ reply_to,
subject,
body,
package_id,
@@ -45,6 +46,7 @@
:cc_addr,
:bcc_addr,
:from_addr,
+ :reply_to,
:subject,
:body,
:package_id,
Index: openacs-4/packages/acs-mail-lite/tcl/complex-send-procs-postgresql.xql
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-mail-lite/tcl/Attic/complex-send-procs-postgresql.xql,v
diff -u -N -r1.1 -r1.2
--- openacs-4/packages/acs-mail-lite/tcl/complex-send-procs-postgresql.xql 2 Dec 2006 12:49:54 -0000 1.1
+++ openacs-4/packages/acs-mail-lite/tcl/complex-send-procs-postgresql.xql 17 Dec 2006 20:11:55 -0000 1.2
@@ -18,6 +18,7 @@
cc_addr,
bcc_addr,
from_addr,
+ reply_to,
subject,
body,
package_id,
@@ -45,6 +46,7 @@
:cc_addr,
:bcc_addr,
:from_addr,
+ :reply_to,
:subject,
:body,
:package_id,
Index: openacs-4/packages/acs-mail-lite/tcl/complex-send-procs.tcl
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-mail-lite/tcl/Attic/complex-send-procs.tcl,v
diff -u -N -r1.3 -r1.4
--- openacs-4/packages/acs-mail-lite/tcl/complex-send-procs.tcl 3 Dec 2006 13:21:01 -0000 1.3
+++ openacs-4/packages/acs-mail-lite/tcl/complex-send-procs.tcl 17 Dec 2006 20:11:55 -0000 1.4
@@ -21,6 +21,7 @@
{-cc_addr ""}
{-bcc_addr ""}
-from_addr:required
+ {-reply_to ""}
{-subject ""}
-body:required
{-package_id ""}
@@ -117,6 +118,7 @@
-cc_addr $cc_addr \
-bcc_addr $bcc_addr \
-from_addr $from_addr \
+ -reply_to $reply_to \
-subject $subject \
-body $body \
-package_id $package_id \
@@ -157,6 +159,7 @@
{-cc_addr ""}
{-bcc_addr ""}
-from_addr:required
+ {-reply_to ""}
{-subject ""}
-body:required
{-package_id ""}
@@ -194,6 +197,8 @@
@param from_addr E-Mail address of the sender. We will try to figure out the name if possible.
+ @param reply_to E-Mail address to which replies should go. Defaults to from_addr
+
@param subject of the email
@param body Text body of the email
@@ -277,17 +282,26 @@
}
}
+ # Set the Reply-To
+ if {$reply_to eq ""} {
+ set reply_to $sender_addr
+ }
+
+ # Get the party_id for the sender
set party_id($from_addr) [party::get_by_email -email $from_addr]
# Deal with the sender address. Only change the from string if we find a party_id
# This should take care of anyone parsing in an email which is already formated with <>.
set party_id($sender_addr) [party::get_by_email -email $sender_addr]
if {[exists_and_not_null party_id($sender_addr)]} {
set from_string "\"[party::name -email $sender_addr]\" <${sender_addr}>"
+ set reply_to_string "\"[party::name -email $sender_addr]\" <${reply_to}>"
} else {
set from_string $sender_addr
+ set reply_to_string $sender_addr
}
+
# decision between normal or multipart/alternative body
if { $alternative_part_p eq "0"} {
# Set the message token
@@ -499,7 +513,6 @@
# Rollout support (see above for details)
- ns_log Notice "acs-mail-lite:complex_send:: From String: $from_string"
set delivery_mode [ns_config ns/server/[ns_info server]/acs/acs-rollout-support EmailDeliveryMode]
if {![empty_string_p $delivery_mode]
&& ![string equal $delivery_mode default]
@@ -538,6 +551,7 @@
smtp::sendmessage $multi_token \
-header [list From "$from_string"] \
+ -header [list Reply-To "$reply_to_string"] \
-header [list To "[join $to_list ","]"] \
-header [list CC "[join $cc_list ","]"] \
-header [list BCC "[join $bcc_list ","]"] \
@@ -583,6 +597,7 @@
smtp::sendmessage $multi_token \
-header [list From "$from_string"] \
+ -header [list Reply-To "$reply_to_string"] \
-header [list To "$email"] \
-servers $smtp \
-ports $smtpport \
@@ -610,6 +625,7 @@
smtp::sendmessage $multi_token \
-header [list From "$from_string"] \
+ -header [list Reply-To "$reply_to_string"] \
-header [list To "$email"] \
-servers $smtp \
-ports $smtpport \
@@ -669,6 +685,7 @@
-cc_addr $cc_addr \
-bcc_addr $bcc_addr \
-from_addr $from_addr \
+ -reply_to $reply_to \
-subject $subject \
-body $body \
-package_id $package_id \