- Publicity: Public Only All
acs-mail-lite-callback-procs.tcl
Callback procs for acs-mail-lite
- Location:
- packages/acs-mail-lite/tcl/acs-mail-lite-callback-procs.tcl
- Created:
- 2005-06-15
- Author:
- Malte Sussdorff <sussdorff@sussdorff.de>
- CVS Identification:
$Id: acs-mail-lite-callback-procs.tcl,v 1.30.2.2 2021/02/22 15:05:53 antoniop Exp $
Procedures in this file
- callback::acs_mail_lite::email_form_elements::contract (private)
- callback::acs_mail_lite::email_inbound::contract (private)
- callback::acs_mail_lite::email_inbound::impl::acs-mail-lite (private)
- callback::acs_mail_lite::files::contract (private)
- callback::acs_mail_lite::incoming_email::contract (private)
- callback::acs_mail_lite::incoming_email::impl::acs-mail-lite (private, deprecated)
- callback::acs_mail_lite::incoming_object_email::contract (private)
- callback::acs_mail_lite::send::contract (private)
Detailed information
callback::acs_mail_lite::email_form_elements::contract (private)
callback::acs_mail_lite::email_form_elements::contract \ -varname varname
- Switches:
- -varname (required)
- Partial Call Graph (max 5 caller/called nodes):
- Testcases:
- No testcase defined.
callback::acs_mail_lite::email_inbound::contract (private)
callback::acs_mail_lite::email_inbound::contract \ -headers_array_name headers_array_name \ -parts_array_name parts_array_name [ -package_id package_id ] \ [ -object_id object_id ] [ -party_id party_id ] [ -other other ] \ [ -datetime_cs datetime_cs ]
Callback that is executed for inbound e-mails that are queued. package_id, object_id, party_id, other, and datetime_cs are populated only when information provided via a signed unique_id via acs_mail_lite::unique_id_create
- Switches:
- -headers_array_name (required)
- -parts_array_name (required)
- -package_id (optional)
- -object_id (optional)
- -party_id (optional)
- -other (optional)
- -datetime_cs (optional)
- Partial Call Graph (max 5 caller/called nodes):
- Testcases:
- No testcase defined.
callback::acs_mail_lite::email_inbound::impl::acs-mail-lite (private)
callback::acs_mail_lite::email_inbound::impl::acs-mail-lite \ -headers_array_name headers_array_name \ -parts_array_name parts_array_name [ -package_id package_id ] \ [ -object_id object_id ] [ -party_id party_id ] [ -other other ] \ [ -datetime_cs datetime_cs ]
Example Implementation of acs_mail_lite::email_inbound. This is where documentation for callback goes.
- Switches:
- -headers_array_name (required)
- An array with all email headers.
- -parts_array_name (required)
- An array with info on files and bodies.
- -package_id (optional)
- The package_id of package that sent the original email.
- -object_id (optional)
- -party_id (optional)
- -other (optional)
- -datetime_cs (optional)
- Not all inbound email are expected to be replies.
- Created:
- 2017-10-17
- See Also:
- Partial Call Graph (max 5 caller/called nodes):
- Testcases:
- No testcase defined.
callback::acs_mail_lite::files::contract (private)
callback::acs_mail_lite::files::contract -varname varname \ -recipient_ids recipient_ids
- Switches:
- -varname (required)
- -recipient_ids (required)
- Partial Call Graph (max 5 caller/called nodes):
- Testcases:
- No testcase defined.
callback::acs_mail_lite::incoming_email::contract (private)
callback::acs_mail_lite::incoming_email::contract -array array \ [ -package_id package_id ]
Callback that is executed for incoming e-mails if the email is *NOT* like $object_id@servername
- Switches:
- -array (required)
- -package_id (optional)
- Partial Call Graph (max 5 caller/called nodes):
- Testcases:
- No testcase defined.
callback::acs_mail_lite::incoming_email::impl::acs-mail-lite (private, deprecated)
callback::acs_mail_lite::incoming_email::impl::acs-mail-lite \ -array array -package_id package_id
Deprecated. Invoking this procedure generates a warning.
Implementation of the interface acs_mail_lite::incoming_email for acs-mail-lite. This proc takes care of emails bounced back from mailer daemons. The required syntax for the To header is as follows: EnvelopPrefix-user_id-signature-package_id@myhost.com. This email was set for the Return-Path header of the original email. The signature is created by calculating the SHA value of the original Message-Id header. Thus an email is valid if the signature is correct and the user is known. If this is the case we record the bounce.
- Switches:
- -array (required)
- An array with all headers, files and bodies. To access the array you need to use upvar.
- -package_id (required)
- The package instance that registered the prefix
- Returns:
- nothing
- Error:
- Author:
- Nima Mazloumi <nima.mazloumi@gmx.de>
- Created:
- 2005-07-15
- See Also:
- Partial Call Graph (max 5 caller/called nodes):
- Testcases:
- No testcase defined.
callback::acs_mail_lite::incoming_object_email::contract (private)
callback::acs_mail_lite::incoming_object_email::contract -array array \ -object_id object_id
Callback that is executed for incoming e-mails if the email is like $object_id@servername
- Switches:
- -array (required)
- -object_id (required)
- Partial Call Graph (max 5 caller/called nodes):
- Testcases:
- No testcase defined.
callback::acs_mail_lite::send::contract (private)
callback::acs_mail_lite::send::contract -package_id package_id \ -message_id message_id -from_addr from_addr -to_addr to_addr \ -body body [ -mime_type mime_type ] [ -subject subject ] \ [ -cc_addr cc_addr ] [ -bcc_addr bcc_addr ] [ -file_ids file_ids ] \ [ -filesystem_files filesystem_files ] \ [ -delete_filesystem_files_p delete_filesystem_files_p ] \ [ -object_id object_id ] [ -status status ] [ -errorMsg errorMsg ]
Callback for executing code after an email has been send using the send mechanism.
- Switches:
- -package_id (required)
- Package ID of the sending package
- -message_id (required)
- the generated message_id for this mail
- -from_addr (required)
- email of the sender
- -to_addr (required)
- list of emails to whom did we send this email
- -body (required)
- Text body of the email
- -mime_type (optional, defaults to
"text/plain"
)- Mime type of the email body
- -subject (optional)
- of the email
- -cc_addr (optional)
- list of emails to whom did we send this email in CC
- -bcc_addr (optional)
- list of emails to whom did we send this email in BCC
- -file_ids (optional)
- List of file ids sent as attachments.
- -filesystem_files (optional)
- -delete_filesystem_files_p (optional)
- -object_id (optional)
- The ID of the object that is responsible for sending the mail in the first place
- -status (optional, defaults to
"ok"
)- Status of the send operation ("ok" or "error")
- -errorMsg (optional)
- Error Details
- Partial Call Graph (max 5 caller/called nodes):
- Testcases:
- No testcase defined.
Content File Source
ad_library { Callback procs for acs-mail-lite @author Malte Sussdorff (sussdorff@sussdorff.de) @creation-date 2005-06-15 @cvs-id $Id: acs-mail-lite-callback-procs.tcl,v 1.30.2.2 2021/02/22 15:05:53 antoniop Exp $ } d_proc -public -callback acs_mail_lite::send { -package_id:required -message_id:required -from_addr:required -to_addr:required -body:required {-mime_type "text/plain"} {-subject} {-cc_addr} {-bcc_addr} {-file_ids} {-filesystem_files} {-delete_filesystem_files_p} {-object_id} {-status ok} {-errorMsg ""} } { Callback for executing code after an email has been send using the send mechanism. @param package_id Package ID of the sending package @param message_id the generated message_id for this mail @param from_addr email of the sender @param to_addr list of emails to whom did we send this email @param body Text body of the email @param mime_type Mime type of the email body @param subject of the email @param cc_addr list of emails to whom did we send this email in CC @param bcc_addr list of emails to whom did we send this email in BCC @param file_ids List of file ids sent as attachments. @param object_id The ID of the object that is responsible for sending the mail in the first place @param status Status of the send operation ("ok" or "error") @param errorMsg Error Details } - d_proc -public -callback acs_mail_lite::incoming_email { -array:required -package_id } { Callback that is executed for incoming e-mails if the email is *NOT* like $object_id@servername } - d_proc -public -callback acs_mail_lite::incoming_object_email { -array:required -object_id:required } { Callback that is executed for incoming e-mails if the email is like $object_id@servername } - d_proc -public -callback acs_mail_lite::email_form_elements { -varname:required } { } - d_proc -public -callback acs_mail_lite::files { -varname:required -recipient_ids:required } { } - d_proc -deprecated -callback acs_mail_lite::incoming_email -impl acs-mail-lite { -array:required -package_id:required } { Implementation of the interface acs_mail_lite::incoming_email for acs-mail-lite. This proc takes care of emails bounced back from mailer daemons. The required syntax for the To header is as follows: EnvelopPrefix-user_id-signature-package_id@myhost.com. This email was set for the Return-Path header of the original email. The signature is created by calculating the SHA value of the original Message-Id header. Thus an email is valid if the signature is correct and the user is known. If this is the case we record the bounce. @author Nima Mazloumi (nima.mazloumi@gmx.de) @creation-date 2005-07-15 @param array An array with all headers, files and bodies. To access the array you need to use upvar. @param package_id The package instance that registered the prefix @return nothing @error } { upvar $array email # for email_queue, header info is already parsed if { [info exists email(aml_to_addrs)] } { set to $email(aml_to_addrs) } else { set to [acs_mail_lite::parse_email_address -email $email(to)] } ns_log Debug "acs_mail_lite::incoming_email -impl acs-mail-lite called. Recipient $to" if { ![info exists email(aml_user_id)] } { # # GN: acs_mail_lite::parse_bounce_address is deprecated. # # Should # we use here acs_mail_lite::inbound_email_context, or should # acs_mail_lite::incoming_email (and load_mails) be also deprecated # and only # - acs_mail_lite::maildir_check_incoming and # - acs_mail_lite::imap_check_incoming # should be called? # # Traditional call parses here. Queue case is pre-parsed. lassign [acs_mail_lite::parse_bounce_address -bounce_address $to] user_id package_id signature } else { set user_id $email(aml_user_id) set package_id $email(aml_package_id) # signature could come from a number of headers. Pre-parsing # makes signature obsolete here. set signature "" } # The above adaptions make this proc usable with newer versions of # code in the legacy paradigm. # Sadly, this bounces all cases with a user_id so it is not # usable for the new inbound email callback scheme. # If no user_id found or signature invalid, ignore message if {$user_id eq ""} { ns_log Debug "acs_mail_lite::incoming_email impl acs-mail-lite: No equivalent user found for $to" } else { ns_log Debug "acs_mail_lite::incoming_email impl acs-mail-lite: Bounce checking $to, $user_id" acs_mail_lite::record_bounce -user_id $user_id } } d_proc -public -callback acs_mail_lite::email_inbound { -headers_array_name:required -parts_array_name:required {-package_id ""} {-object_id ""} {-party_id ""} {-other ""} {-datetime_cs ""} } { Callback that is executed for inbound e-mails that are queued. package_id, object_id, party_id, other, and datetime_cs are populated only when information provided via a signed unique_id via acs_mail_lite::unique_id_create } - d_proc -public -callback acs_mail_lite::email_inbound -impl acs-mail-lite { -headers_array_name:required -parts_array_name:required {-package_id ""} {-object_id ""} {-party_id ""} {-other ""} {-datetime_cs ""} } { Example Implementation of acs_mail_lite::email_inbound. This is where documentation for callback goes. @creation-date 2017-10-17 @param headers_array_name An array with all email headers. @param parts_array_name An array with info on files and bodies. @see acs_mail_lite::inbound_queue_pull_one @param package_id The package_id of package that sent the original email. @param object_id @param party_id @param other @param datetime_cs Not all inbound email are expected to be replies. } { upvar $headers_array_name headers_arr upvar $parts_array_name parts_arr set no_errors_p 1 # ------------------- Do Not change code above this line in your copy --- # Use this callback implementation as a template for other packages. # Be sure to change 'impl acs-mail-lite' to a reference relevant to # package implementation is used in. # For example: -impl super-package-now-with-email # # This proc is called whenever an inbound email is pulled from the queue. # # System-wide bounces, vacation notices and other noise have already been # filtered out. # # A package developer should just need to confirm input for their specific # package. # # When supplied, package_id, object_id and party_id, other and datetime_cs # are passed in headers via a signed unique_id. # Values default to empty string. # headers_arr is an array of header values indexed by header name. # header names are in original uppercase and lowercase, which may # have some significance in filtering cases. Although case should # should not be relied on for obtaining a value. # Some header indexes are created by ACS Mail Lite procs during # processing. For example these indexes may be populated via # a unique id header created using acs_mail_lite::unique_id_create : # # aml_package_id contains package_id # # aml_object_id contains object_id # # aml_party_id contains party_id (usually same as user_id) # # aml_other contains other data useful as input # # aml_datetime_cs contains approx time in seconds since epoch when sent. # # # Other header names, and a description of their values, includes: # # aml_received_cs approx time in seconds since epoch when email received. # aml_subject contains subject value. # aml_to contents of 'to' header # aml_to_addrs email address of 'to' header # aml_from contents of 'from' header # aml_from_addrs email address of 'from' header # For other created headers, see: acs_mail_lite::inbound_queue_pull_one # Header indexes may not exist for all cases. # # parts_arr is an array that contains all the information about attached # or inline files and body contents. # For details, see acs_mail_lite::inbound_queue_pull_one # ns_log Debug "acs_mail_lite::email_inbound -impl acs-mail-lite called. Sender $headers_arr(aml_from_addrs)" # Important: If your implementation has an error, # set no_errors_p to 0, so that the email remains # in the queue for later examination, even though it is also # marked as 'processed' so it will not be re-processed later. # # ------------------- Do Not change code below this line in your copy --- return $no_errors_p } # Local variables: # mode: tcl # tcl-indent-level: 4 # indent-tabs-mode: nil # End: