Best Temp Pass Autoresponder?
Alex Tweedly
alex at tweedly.net
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
<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
More information about the use-livecode
mailing list