webmcp

annotate framework/env/encode/mime/mailbox_list_header_line.lua @ 560:75204c64cc5f

Use CRLF instead of LF for terminating raw header
author jbe
date Tue Jun 09 13:27:58 2020 +0200 (2020-06-09)
parents f2fe38a54504
children
rev   line source
jbe/bsw@0 1 function encode.mime.mailbox_list_header_line(key, mailboxes)
jbe/bsw@0 2 local mailboxes = mailboxes
jbe/bsw@0 3 if not mailboxes then
jbe/bsw@0 4 mailboxes = {}
jbe@60 5 elseif
jbe@60 6 type(mailboxes) == "string" or
jbe@60 7 mailboxes.address or mailboxes.name
jbe@60 8 then
jbe/bsw@0 9 mailboxes = { mailboxes }
jbe/bsw@0 10 end
jbe/bsw@0 11 local indentation = ""
jbe/bsw@0 12 for i = 1, #key + #(": ") do
jbe/bsw@0 13 indentation = indentation .. " "
jbe/bsw@0 14 end
jbe/bsw@0 15 local parts = { key, ": " }
jbe/bsw@0 16 local first = true
jbe/bsw@0 17 for idx, mailbox in ipairs(mailboxes) do
jbe/bsw@0 18 local name, address
jbe/bsw@0 19 if type(mailbox) == "string" then
jbe/bsw@0 20 name, address = nil, mailbox
jbe/bsw@0 21 else
jbe/bsw@0 22 name, address = mailbox.name, mailbox.address
jbe/bsw@0 23 end
jbe/bsw@0 24 if address and not string.find(
jbe/bsw@0 25 address,
jbe/bsw@0 26 "^[0-9A-Za-z!#%$%%&'%*%+%-/=%?%^_`{|}~%.]+" ..
jbe/bsw@0 27 "@[0-9A-Za-z!#%$%%&'%*%+%-/=%?%^_`{|}~%.]+$"
jbe/bsw@0 28 )
jbe/bsw@0 29 then
jbe/bsw@0 30 if name then
jbe/bsw@0 31 name, address = name .. " <" .. address .. ">", nil
jbe/bsw@0 32 else
jbe/bsw@0 33 name, address = address, nil
jbe/bsw@0 34 end
jbe/bsw@0 35 end
jbe/bsw@0 36 if name or address then
jbe/bsw@0 37 if not first then
jbe/bsw@0 38 parts[#parts+1] = ",\r\n"
jbe/bsw@0 39 parts[#parts+1] = indentation
jbe/bsw@0 40 end
jbe/bsw@0 41 if name then
jbe/bsw@0 42 parts[#parts+1] = encode.mime.atom_token(name)
jbe/bsw@0 43 parts[#parts+1] = " <"
jbe/bsw@0 44 if address then
jbe/bsw@0 45 parts[#parts+1] = address
jbe/bsw@0 46 end
jbe/bsw@0 47 parts[#parts+1] = ">"
jbe/bsw@0 48 else
jbe/bsw@0 49 parts[#parts+1] = address
jbe/bsw@0 50 end
jbe/bsw@0 51 first = false
jbe/bsw@0 52 end
jbe/bsw@0 53 end
jbe/bsw@0 54 if first then
jbe/bsw@0 55 return ""
jbe/bsw@0 56 end
jbe/bsw@0 57 parts[#parts+1] = "\r\n"
jbe/bsw@0 58 return table.concat(parts)
jbe/bsw@0 59 end

Impressum / About Us