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 <address>".
-- Addresses can be passed as comma separated lists.
-- Attachements can be added by passing an array (integer indexed or otherwise).
-- 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 hidden)    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 tMsg
   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
   else
      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"
            else
               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


_______________________________________________
use-livecode mailing list
use-livecode@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your subscription 
preferences:
http://lists.runrev.com/mailman/listinfo/use-livecode

Reply via email to