.jpg attachments
Posted: Wed Jul 23, 2014 7:47 pm
I have a nearly finished app that takes a screenshot of a card, saves on the mobile device as a .jpg file & uploads it to a server through a secure connection.
The server (Livecode server) accepts the email address information and sends an email to 2 or 3 people with the screen shot as an attachment.
I have no trouble opening the attachment with gmail, the server email that I have on the same server that sends the email, my cox.net email.
Yahoo on the other hand is not able to view or open the .jpg file. (Both ymail.com and yahoo.com)
I am afraid that there will be other servers other than Yahoo that will likely have problems.
The email is pretty much the same as shown in the livecode server tutorials below.
Any suggestions?
Tom
-- 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 (interger 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 pReturnPath, 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 after tMsg
if pCc is not empty then
put "Cc:" && pCc & return after tMsg
end if
if pBcc is not empty then
put "Bcc:" && pBcc & return after tMsg
end if
put "Subject:" && pSub & return after tMsg
-- 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 appropriatly
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, sepearting using
-- the generated boundary
if pAtts is an array then
put "--" & tBoundary & return after tMsg
repeat for each element tAtt in pAtts
if (tAtt["binary_data"] <> empty) or (there is a file tAtt["path"]) then
if tAtt["type"] is empty then
get "application/octet-stream"
else
get tAtt["type"]
end if
if tAtt["binary_data"] = empty then
put URL ("binfile:" & tAtt["path"]) into tAtt["binary_data"]
end if
put "Content-Type:" && it & "; name=" & wrapQ(tAtt["name"]) & ";" & \
return & "Content-Transfer-Encoding: base64;" & return & return & \
base64Encode(tAtt["binary_data"]) & 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
put "echo" && wrapQ(shellEscape(tMsg)) && "| /usr/sbin/sendmail -f" && quote & "<" & shellEscape(pReturnPath) & ">" & quote && "-oi -t" into tCmd
# put tCmd
put shell(tCmd)
end mail
The server (Livecode server) accepts the email address information and sends an email to 2 or 3 people with the screen shot as an attachment.
I have no trouble opening the attachment with gmail, the server email that I have on the same server that sends the email, my cox.net email.
Yahoo on the other hand is not able to view or open the .jpg file. (Both ymail.com and yahoo.com)
I am afraid that there will be other servers other than Yahoo that will likely have problems.
The email is pretty much the same as shown in the livecode server tutorials below.
Any suggestions?
Tom
--
-- 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 (interger 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 pReturnPath, 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 after tMsg
if pCc is not empty then
put "Cc:" && pCc & return after tMsg
end if
if pBcc is not empty then
put "Bcc:" && pBcc & return after tMsg
end if
put "Subject:" && pSub & return after tMsg
-- 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 appropriatly
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, sepearting using
-- the generated boundary
if pAtts is an array then
put "--" & tBoundary & return after tMsg
repeat for each element tAtt in pAtts
if (tAtt["binary_data"] <> empty) or (there is a file tAtt["path"]) then
if tAtt["type"] is empty then
get "application/octet-stream"
else
get tAtt["type"]
end if
if tAtt["binary_data"] = empty then
put URL ("binfile:" & tAtt["path"]) into tAtt["binary_data"]
end if
put "Content-Type:" && it & "; name=" & wrapQ(tAtt["name"]) & ";" & \
return & "Content-Transfer-Encoding: base64;" & return & return & \
base64Encode(tAtt["binary_data"]) & 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
put "echo" && wrapQ(shellEscape(tMsg)) && "| /usr/sbin/sendmail -f" && quote & "<" & shellEscape(pReturnPath) & ">" & quote && "-oi -t" into tCmd
# put tCmd
put shell(tCmd)
end mail