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 \