webmcp
annotate framework/env/encode/mime/mail.lua @ 67:937bbe05098c
Bugfix regarding compatibility with Lua 5.2:
return _M at end of mondelefant.lua
return _M at end of mondelefant.lua
author | jbe |
---|---|
date | Tue Apr 17 15:39:27 2012 +0200 (2012-04-17) |
parents | 9fdfb27f8e67 |
children | b7596f5158d4 |
rev | line source |
---|---|
jbe/bsw@0 | 1 local un = encode.mime.unstructured_header_line |
jbe/bsw@0 | 2 local mbl = encode.mime.mailbox_list_header_line |
jbe/bsw@0 | 3 |
jbe/bsw@0 | 4 local function encode_container(parts, container) |
jbe/bsw@0 | 5 if container.multipart then |
jbe/bsw@0 | 6 local boundary |
jbe/bsw@0 | 7 boundary = "BOUNDARY--" .. multirand.string( |
jbe/bsw@0 | 8 24, |
jbe/bsw@0 | 9 "123456789BCDFGHJKLMNPQRSTVWXYZbcdfghjklmnpqrstvwxyz" |
jbe/bsw@0 | 10 ) |
jbe/bsw@0 | 11 parts[#parts+1] = "Content-Type: " |
jbe/bsw@0 | 12 parts[#parts+1] = "multipart/" |
jbe/bsw@0 | 13 parts[#parts+1] = container.multipart |
jbe/bsw@0 | 14 parts[#parts+1] = "; boundary=" |
jbe/bsw@0 | 15 parts[#parts+1] = boundary |
jbe/bsw@0 | 16 parts[#parts+1] = "\r\n\r\nMIME multipart\r\n" -- last \r\n optional |
jbe/bsw@0 | 17 for idx, sub_container in ipairs(container) do |
jbe/bsw@0 | 18 parts[#parts+1] = "\r\n--" |
jbe/bsw@0 | 19 parts[#parts+1] = boundary |
jbe/bsw@0 | 20 parts[#parts+1] = "\r\n" |
jbe/bsw@0 | 21 encode_container(parts, sub_container) |
jbe/bsw@0 | 22 end |
jbe/bsw@0 | 23 parts[#parts+1] = "\r\n--" |
jbe/bsw@0 | 24 parts[#parts+1] = boundary |
jbe/bsw@0 | 25 parts[#parts+1] = "--\r\n" |
jbe/bsw@0 | 26 else |
jbe/bsw@0 | 27 parts[#parts+1] = "Content-Type: " |
jbe/bsw@0 | 28 parts[#parts+1] = container.content_type or "text/plain" |
jbe/bsw@0 | 29 parts[#parts+1] = "\r\n" |
jbe/bsw@0 | 30 if container.content_id then |
jbe/bsw@0 | 31 parts[#parts+1] = "Content-ID: <" |
jbe/bsw@0 | 32 parts[#parts+1] = container.content_id |
jbe/bsw@0 | 33 parts[#parts+1] = ">\r\n" |
jbe/bsw@0 | 34 end |
jbe/bsw@0 | 35 if container.attachment_filename then |
jbe/bsw@0 | 36 parts[#parts+1] = "Content-Disposition: attachment; filename=" |
jbe/bsw@0 | 37 parts[#parts+1] = encode.mime.atom_token( |
jbe/bsw@0 | 38 container.attachment_filename |
jbe/bsw@0 | 39 ) |
jbe/bsw@0 | 40 parts[#parts+1] = "\r\n" |
jbe/bsw@0 | 41 end |
jbe/bsw@0 | 42 if container.binary then |
jbe/bsw@0 | 43 parts[#parts+1] = "Content-Transfer-Encoding: base64\r\n\r\n" |
jbe/bsw@0 | 44 parts[#parts+1] = encode.mime.base64(container.content) |
jbe/bsw@0 | 45 else |
jbe/bsw@0 | 46 parts[#parts+1] = |
jbe/bsw@0 | 47 "Content-Transfer-Encoding: quoted-printable\r\n\r\n" |
jbe/bsw@0 | 48 parts[#parts+1] = |
jbe/bsw@0 | 49 encode.mime.quoted_printable_text_content(container.content) |
jbe/bsw@0 | 50 end |
jbe/bsw@0 | 51 end |
jbe/bsw@0 | 52 end |
jbe/bsw@0 | 53 |
jbe/bsw@0 | 54 function encode.mime.mail(args) |
jbe/bsw@0 | 55 local parts = {} |
jbe/bsw@0 | 56 parts[#parts+1] = mbl("From", args.from) |
jbe/bsw@0 | 57 parts[#parts+1] = mbl("Sender", args.sender) |
jbe/bsw@0 | 58 parts[#parts+1] = mbl("Reply-To", args.reply_to) |
jbe/bsw@0 | 59 parts[#parts+1] = mbl("To", args.to) |
jbe/bsw@0 | 60 parts[#parts+1] = mbl("Cc", args.cc) |
jbe/bsw@0 | 61 parts[#parts+1] = mbl("Bcc", args.bcc) |
jbe/bsw@0 | 62 parts[#parts+1] = un("Subject", args.subject) |
jbe/bsw@0 | 63 parts[#parts+1] = "MIME-Version: 1.0\r\n" |
jbe/bsw@0 | 64 encode_container(parts, args) |
jbe/bsw@0 | 65 return table.concat(parts) |
jbe/bsw@0 | 66 end |