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 -r1.10.2.1 -r1.10.2.2
--- openacs-4/packages/acs-mail-lite/acs-mail-lite.info 18 Feb 2006 22:43:06 -0000 1.10.2.1
+++ openacs-4/packages/acs-mail-lite/acs-mail-lite.info 16 Mar 2006 09:45:39 -0000 1.10.2.2
@@ -7,15 +7,16 @@
f
t
-
+
+ Malte Sussdorff
Timo Hentschel
Simplified reliable email transmission with bounce management.
2006-02-18
OpenACS
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
+ 3
-
+
@@ -28,6 +29,7 @@
+
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 -r1.18.2.5 -r1.18.2.6
--- openacs-4/packages/acs-mail-lite/tcl/acs-mail-lite-procs.tcl 18 Oct 2005 15:44:29 -0000 1.18.2.5
+++ openacs-4/packages/acs-mail-lite/tcl/acs-mail-lite-procs.tcl 16 Mar 2006 09:45:39 -0000 1.18.2.6
@@ -768,15 +768,17 @@
{-folder_id ""}
{-mime_type "text/plain"}
{-object_id ""}
+ -no_callback:boolean
+ -use_sender:boolean
} {
-
+
Prepare an email to be send with the option to pass in a list
of file_ids as well as specify an html_body and a mime_type
@param send_immediately The email is send immediately and not stored in the acs_mail_lite_queue
@param to_addr Email address to send the mail to
-
+
@param from_addr Who is sending the email
@param subject of the email
@@ -787,18 +789,26 @@
@param package_id Package ID of the sending package
- @param file_ids List of file ids to be send as attachments. This will only work with files stored in the file system.
+ @param file_ids List of file ids (ITEMS, not revisions) to be send as attachments. This will only work with files stored in the file system.
@param mime_type MIME Type of the mail to send out. Can be "text/plain", "text/html".
@param object_id The ID of the object that is responsible for sending the mail in the first place
-
+
+ @param no_callback Boolean that indicates if callback should be executed or not. If you don't provide it it will execute callbacks
+
+ @param use_sender Boolean indicating that from_addr should be used regardless of fixed-sender parameter
} {
+
+ # We check if the parameter
+ set fixed_sender [parameter::get -parameter "FixedSenderEmail" \
+ -package_id [apm_package_id_from_key "acs-mail-lite"]]
- # Added it here as it seems to cause problems with forums
- # Unsure how this could happen, but who am I to argue
- package require mime
- package require base64
+ if { ![empty_string_p $fixed_sender] && !$use_sender_p} {
+ set sender_addr $fixed_sender
+ } else {
+ set sender_addr $from_addr
+ }
# Set the message token
set message_token [mime::initialize -canonical "$mime_type" -string "$body"]
@@ -815,40 +825,79 @@
lappend file_ids $revision_id
}
} elseif {[exists_and_not_null file_ids]} {
-
+
+ set item_p 1
db_foreach get_file_info "select r.mime_type,r.title, r.content as filename
from cr_revisions r
where r.revision_id in ([join $file_ids ","])" {
lappend tokens [mime::initialize -param [list name "[ad_quotehtml $title]"] -canonical $mime_type -file "[cr_fs_path]$filename"]
+ set item_p 0
}
+
+ if {$item_p} {
+ db_foreach get_file_info "select r.mime_type,r.title, r.content as filename
+ from cr_revisions r, cr_items i
+ where r.revision_id = i.latest_revision
+ and i.item_id in ([join $file_ids ","])" {
+ ns_log Debug "Files: $file_ids ::: $filename"
+ lappend tokens [mime::initialize -param [list name "[ad_quotehtml $title]"] -canonical $mime_type -file "[cr_fs_path]$filename"]
+ }
+ }
}
set multi_token [mime::initialize -canonical multipart/mixed -parts "$tokens"]
mime::setheader $multi_token Subject "$subject"
set packaged [mime::buildmessage $multi_token]
-
+
#Close all mime tokens
mime::finalize $multi_token -subordinates all
set message_id [generate_message_id]
+
+ # Rollout support (see above for details)
- acs_mail_lite::sendmail -from_addr $from_addr -sendlist [get_address_array -addresses $to_addr] -msg $packaged -valid_email_p t -message_id $message_id -package_id $package_id
-
+ 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]
+ } {
+ # The to_addr has been put in an array, and returned. Now
+ # it is of the form: email email_address name namefromdb
+ # user_id user_id_if_present_or_empty_string
+
+ # ----------------------------------------------------
+ # Rollout support
+ # ----------------------------------------------------
+ # if set in etc/config.tcl, then
+ # packages/acs-tcl/tcl/rollout-email-procs.tcl will rename a
+ # proc to ns_sendmail. So we simply call ns_sendmail instead
+ # of the sendmail bin if the EmailDeliveryMode parameter is
+ # set to anything other than default - JFR
+ #-----------------------------------------------------
+
+ set to_address "[lindex $to_addr 1] ([lindex $to_addr 3])"
+ set eh [util_list_to_ns_set $extraheaders]
+ ns_sendmail $to_address $from_addr $subject $body $eh $bcc
+ } else {
+ acs_mail_lite::sendmail -from_addr $sender_addr -sendlist [get_address_array -addresses $to_addr] -msg $packaged -valid_email_p t -message_id $message_id -package_id $package_id
+ }
+
if {[empty_string_p $package_id]} {
set package_id [apm_package_id_from_key "acs-mail-lite"]
}
- callback acs_mail_lite::complex_send \
- -package_id $package_id \
- -from_party_id [party::get_by_email -email $from_addr] \
- -to_party_id [party::get_by_email -email $to_addr] \
- -body $body \
- -message_id $message_id \
- -subject $subject \
- -object_id $object_id \
- -file_ids [split $file_ids ","]
+ if { !$no_callback_p } {
+ callback acs_mail_lite::complex_send \
+ -package_id $package_id \
+ -from_party_id [party::get_by_email -email $from_addr] \
+ -to_party_id [party::get_by_email -email $to_addr] \
+ -body $body \
+ -message_id $message_id \
+ -subject $subject \
+ -object_id $object_id \
+ -file_ids $file_ids
+ }
}
-
+
ad_proc -private sweeper {} {
Send messages in the acs_mail_lite_queue table.
} {