| 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 |