Best Temp Pass Autoresponder?

Alex Tweedly alex at
Sun Jul 14 18:24:07 EDT 2019

On 14/07/2019 18:20, Rick Harrison via use-livecode wrote:

> The main snag I’m working on now is setting up
> the server to send out the email to the user.
> This morning I’m looking at the shell commands
> and at tsNet SMTP possible solutions.

In case it helps, here's the code I use to send email from my LC server 
account. I should know where this came from (and I suspect I should be 
able to thank the original author), but that's lost info right now.

-- Alex.

-- mail
-- Emails the given message to the recipients specified.
-- Each address passed can have a name  attached in the form "name 
-- Addresses can be passed as comma separated lists.
-- Attachements can be added by passing an array (integer indexed or 
-- with each attachment itself being an array.
-- pTo    - The addresses to send the message to
-- pSub    - The message subject
-- pMsg    - The message body
-- pFrom    - The address of the message sender
-- pCc    - Any cc addresses
-- pBcc    - Any Bcc addresses
-- pHtml    - Boolean, if the message is to be sent as html
-- pAtts    - Array of all attachments to send, each attachment of the form:
--    * name:  the name of the attachment
--    * path:  the absolute path to the attachment
--    * type:  the mime type of the attachment, defaults to
--    application/octet-stream

command mail pTo, pSub, pMsg, pFrom, pCc, pBcc, pHtml, pAtts
    local tMsg

    -- build the message header, adding the from, to and subject details
    -- we also put any cc addresses in here, but not bcc (bcc addresses 
    put "From:" && pFrom & return & "To:" && pTo & return & "Subject:" 
&& pSub & \
          return into tMsg    if pCc is not empty then
       put "Cc:" && pCc & return after tMsg
    end if

    -- if there are any attachments, we must send this email as multipart
    -- with the message body and each attachment forming a part
    -- we do this by specifying the message as multipart and generating 
a unique boundary
    if pAtts is an array then
       local tBoundary
       put "boundary" & the seconds into tBoundary
       put "MIME-Version: 1.0" & return & "Content-Type: 
multipart/mixed; boundary=" & \
             wrapQ(tBoundary) & return & "--" & tBoundary & return after 
    end if

    -- add the actual message body, setting the content type appropriately
    if pHtml is true then
       put "Content-Type: text/html;" & return & return after tMsg
       put "Content-Type: text/plain;" & return & return after tMsg
    end if
    put pMsg & return after tMsg

    -- add each attachment as a new part of the message, separating using
    -- the generated boundary
    if pAtts is an array then
       put "--" & tBoundary & return after tMsg
       repeat for each element tAtt in pAtts
          if there is a file tAtt["path"] then
             if tAtt["type"] is empty then
                get "application/octet-stream"
                get tAtt["type"]
             end if
             put "Content-Type:" && it & "; name=" & wrapQ(tAtt["name"]) 
& ";" & \
                   return & "Content-Transfer-Encoding: base64;" & 
return & return & \
                   base64Encode(URL ("binfile:" & tAtt["path"])) & 
return & "--" & \
                   tBoundary & return after tMsg
          end if
       end repeat
    end if

    -- send the mail by piping the message we have just built to the 
sendmail command
    -- we must also send a copy of the message to the bcc addresses
    get shell("echo" && wrapQ(shellEscape(tMsg)) && "| 
/usr/sbin/sendmail" && \
          wrapQ(shellEscape(pTo)) && "-f" && wrapQ(shellEscape(pFrom)))
    if pBcc is not empty then
       get shell("echo" && wrapQ(shellEscape(tMsg)) && "| 
/usr/sbin/sendmail" && \
             wrapQ(shellEscape(pBcc)) && "-f" && wrapQ(shellEscape(pFrom)))
    end if
    if there is a file "log_mail.txt" then
       put "MAIL sent" && the seconds & CR & \
             "TO:" && pTo & CR & \
             "SUBJ:" && pSub & CR &CR after URL ("file:./log_mail.txt")
    end if
end mail

More information about the Use-livecode mailing list