webmcp
annotate framework/env/net/send_mail.lua @ 3:795b764629ca
Version 1.0.3
Important bugfix related to internal forwards (Bug was introduced by the restriction of views with underscore prefix in Version 1.0.2)
Important bugfix related to internal forwards (Bug was introduced by the restriction of views with underscore prefix in Version 1.0.2)
author | jbe |
---|---|
date | Thu Dec 10 12:00:00 2009 +0100 (2009-12-10) |
parents | 9fdfb27f8e67 |
children | 4fb227630097 |
rev | line source |
---|---|
jbe/bsw@0 | 1 --[[-- |
jbe/bsw@0 | 2 net.send_mail{ |
jbe/bsw@0 | 3 envelope_from = envelope_from, -- envelope from address, not part of mail headers |
jbe/bsw@0 | 4 from = from, -- From header address or table with 'name' and 'address' fields |
jbe/bsw@0 | 5 sender = sender, -- Sender header address or table with 'name' and 'address' fields |
jbe/bsw@0 | 6 reply_to = reply_to, -- Reply-To header address or table with 'name' and 'address' fields |
jbe/bsw@0 | 7 to = to, -- To header address or table with 'name' and 'address' fields |
jbe/bsw@0 | 8 cc = cc, -- Cc header address or table with 'name' and 'address' fields |
jbe/bsw@0 | 9 bcc = bcc, -- Bcc header address or table with 'name' and 'address' fields |
jbe/bsw@0 | 10 subject = subject, -- subject of e-mail |
jbe/bsw@0 | 11 multipart = multipart_type, -- "alternative", "mixed", "related", or nil |
jbe/bsw@0 | 12 content_type = content_type, -- only for multipart == nil, defaults to "text/plain" |
jbe/bsw@0 | 13 binary = binary, -- allow full 8-bit content |
jbe/bsw@0 | 14 content = content or { -- content as lua-string, or table in case of multipart |
jbe/bsw@0 | 15 { |
jbe/bsw@0 | 16 multipart = multipart_type, |
jbe/bsw@0 | 17 ..., |
jbe/bsw@0 | 18 content = content or { |
jbe/bsw@0 | 19 {...}, ... |
jbe/bsw@0 | 20 } |
jbe/bsw@0 | 21 }, { |
jbe/bsw@0 | 22 ... |
jbe/bsw@0 | 23 }, |
jbe/bsw@0 | 24 ... |
jbe/bsw@0 | 25 } |
jbe/bsw@0 | 26 } |
jbe/bsw@0 | 27 |
jbe/bsw@0 | 28 This function sends a mail using the /usr/sbin/sendmail command. |
jbe/bsw@0 | 29 |
jbe/bsw@0 | 30 --]]-- |
jbe/bsw@0 | 31 |
jbe/bsw@0 | 32 function net.send_mail(args) |
jbe/bsw@0 | 33 local mail |
jbe/bsw@0 | 34 if type(args) == "string" then |
jbe/bsw@0 | 35 mail = args |
jbe/bsw@0 | 36 else |
jbe/bsw@0 | 37 mail = encode.mime.mail(args) |
jbe/bsw@0 | 38 end |
jbe/bsw@0 | 39 local envelope_from = args.envelope_from |
jbe/bsw@0 | 40 local command |
jbe/bsw@0 | 41 if |
jbe/bsw@0 | 42 envelope_from and |
jbe/bsw@0 | 43 string.find(envelope_from, "^[0-9A-Za-z%.-_@0-9A-Za-z%.-_]+$") |
jbe/bsw@0 | 44 then |
jbe/bsw@0 | 45 command = |
jbe/bsw@0 | 46 "/usr/sbin/sendmail -t -i -f " .. |
jbe/bsw@0 | 47 envelope_from .. |
jbe/bsw@0 | 48 " > /dev/null 2> /dev/null" |
jbe/bsw@0 | 49 else |
jbe/bsw@0 | 50 command = "/usr/sbin/sendmail -t -i > /dev/null 2> /dev/null" |
jbe/bsw@0 | 51 end |
jbe/bsw@0 | 52 trace.debug(command) |
jbe/bsw@0 | 53 -- TODO: use pfilter |
jbe/bsw@0 | 54 local sendmail = assert(io.popen(command, "w")) |
jbe/bsw@0 | 55 sendmail:write(mail) |
jbe/bsw@0 | 56 sendmail:close() |
jbe/bsw@0 | 57 end |