Forum OpenACS Q&A: Re: ns_sendmail replacement?

Collapse
Posted by Bart Teeuwisse on

Talli,

Replace ns_sendmail in aolserver/modules/tcl/sendmail.tcl with:


proc ns_sendmail { to from subject body {extraheaders {}} {bcc {}} } {

    ## Takes comma-separated values in the "to" parm
    ## Multiple To and BCC addresses are handled appropriately.
    ## Original ns_sendmail functionality is preserved.

    ## Cut out carriage returns
    regsub -all "\n" $to "" to
    regsub -all "\r" $to "" to
    regsub -all "\n" $bcc "" bcc
    regsub -all "\r" $bcc "" bcc
    
    ## Split to into a proper list
    set tolist_in [split $to ","]
    set bcclist_in [split $bcc ","]
    
    ## Get smtp server into, if none then use localhost
    set smtp [ns_config ns/parameters smtphost]
    if [string match "" $smtp] {
	set smtp [ns_config ns/parameters mailhost]
    }
    if [string match "" $smtp] {
	set smtp localhost
    }
    set timeout [ns_config ns/parameters smtptimeout]
    if [string match "" $timeout] {
	set timeout 60
    }
    set smtpport [ns_config ns/parameters smtpport]
    if [string match "" $smtpport] {
	set smtpport 25
    }

    ## Extract "from" email address
#     if [regexp {.*<(.*)>} $from ig address] {
# 	set from $address
#     }
    
    set tolist [list]
    foreach toaddr $tolist_in {
# 	if [regexp {.*<(.*)>} $toaddr ig address] {
# 	    set toaddr $address
# 	}
	lappend tolist "[string trim $toaddr]"
    }
    
    set bcclist [list]
    if ![string match "" $bcclist_in] {
	foreach bccaddr $bcclist_in {
# 	    if [regexp {.*<(.*)>} $bccaddr ig address] {
# 		set bccaddr $address
# 	    }
	    lappend bcclist "[string trim $bccaddr]"
	}
    }
    
    ## Send it along to _ns_sendmail
    _ns_sendmail $smtp $smtpport $timeout $tolist $bcclist \
	    $from $subject $body $extraheaders
}

The fix is in the 3 groups of 3 lines commented out.

/Bart