I have the successfully built the latest source code of Tcl TLS with OpenSSL 3.0.18 on both Linux and Windows. While the simple testing failed, the test worked fine with old 1.7/1.8 with OpenSSL 1.1.1k.
---------------------

::mime::1
Trying
<-- 220 ESMTP
--> EHLO cnshntwu02 (wait upto 300 seconds)
<--
<-- 250-AUTH LOGIN PLAIN
<-- 250-AUTH=LOGIN PLAIN
<-- 250-STARTTLS
<-- 250 8BITMIME
--> STARTTLS (wait upto 300 seconds)
<-- 220 ready for tls
--> EHLO cnshntwu02 (wait upto 300 seconds)
^C


The script goes like,

#Initialize Email Option Array
set aMail(SERVER) "smtp SERVER address"
set aMail(PORT) 587
set aMail(FROM)
set aMail(FROM_NAME) "System (c) - Do Not Reply"
set aMail(TO)
set aMail(SUBJ) "Tcltls-2.0b2 test result"
set aMail(MSG) "Tcltls-2.0b2 test result"
set aMail(IMPORTANCE) ""
set sEmailRc ""
set oMailToken [mime::initialize -canonical text/html -string $aMail(MSG)]
puts $oMailToken
set sMailUser
set sMailPass "Password01&"
if {[catch { set sEmailRc [smtp::sendmessage $oMailToken \
    -originator $aMail(FROM) \
    -recipients $aMail(TO) \
    -servers $aMail(SERVER) \
    -ports $aMail(PORT) \
	-username $sMailUser \
	-password $sMailPass \
    -header [list From <$aMail(FROM)>"] \
    -header [list To $aMail(TO)] \
    -header [list Importance $aMail(IMPORTANCE)] \
    -header [list Subject $aMail(SUBJ)] -usetls 1  -debug 1 ]} sErrMsg]} {
	puts "Notification failed - $sErrMsg"
} else {
    if { $sEmailRc !=  "" } {
      puts "Notification failed - $sEmailRc"
    } else {
      puts "Notification sent - $aMail(TO)"
    }
}
mime::finalize $oMailToken
unset oMailToken