| rev | line source | 
| jbe/bsw@0 | 1 --[[-- | 
| jbe@5 | 2 success =                          -- true, if mail has been sent successfully, otherwise false | 
| jbe/bsw@0 | 3 net.send_mail{ | 
| jbe/bsw@0 | 4   envelope_from = envelope_from,   -- envelope from address, not part of mail headers | 
| jbe/bsw@0 | 5   from          = from,            -- From     header address or table with 'name' and 'address' fields | 
| jbe/bsw@0 | 6   sender        = sender,          -- Sender   header address or table with 'name' and 'address' fields | 
| jbe/bsw@0 | 7   reply_to      = reply_to,        -- Reply-To header address or table with 'name' and 'address' fields | 
| jbe/bsw@0 | 8   to            = to,              -- To       header address or table with 'name' and 'address' fields | 
| jbe/bsw@0 | 9   cc            = cc,              -- Cc       header address or table with 'name' and 'address' fields | 
| jbe/bsw@0 | 10   bcc           = bcc,             -- Bcc      header address or table with 'name' and 'address' fields | 
| jbe/bsw@0 | 11   subject       = subject,         -- subject of e-mail | 
| jbe/bsw@0 | 12   multipart     = multipart_type,  -- "alternative", "mixed", "related", or nil | 
| jbe/bsw@0 | 13   content_type  = content_type,    -- only for multipart == nil, defaults to "text/plain" | 
| jbe/bsw@0 | 14   binary        = binary,          -- allow full 8-bit content | 
| jbe/bsw@0 | 15   content       = content or {     -- content as lua-string, or table in case of multipart | 
| jbe/bsw@0 | 16     { | 
| jbe/bsw@0 | 17       multipart = multipart_type, | 
| jbe/bsw@0 | 18       ..., | 
| jbe/bsw@0 | 19       content   = content or { | 
| 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 | 
| jbe@5 | 29 This function sends a mail using the /usr/sbin/sendmail command. It returns true on success, otherwise false. | 
| jbe/bsw@0 | 30 | 
| jbe/bsw@0 | 31 --]]-- | 
| jbe/bsw@0 | 32 | 
| jbe/bsw@0 | 33 function net.send_mail(args) | 
| jbe/bsw@0 | 34   local mail | 
| jbe/bsw@0 | 35   if type(args) == "string" then | 
| jbe/bsw@0 | 36     mail = args | 
| jbe/bsw@0 | 37   else | 
| jbe/bsw@0 | 38     mail = encode.mime.mail(args) | 
| jbe/bsw@0 | 39   end | 
| jbe/bsw@0 | 40   local envelope_from = args.envelope_from | 
| jbe@444 | 41   local command = table.new(net._mail_config.command) | 
| jbe/bsw@0 | 42   if | 
| jbe/bsw@0 | 43     envelope_from and | 
| jbe@444 | 44     net._mail_config.envelope_from_option and | 
| jbe/bsw@0 | 45     string.find(envelope_from, "^[0-9A-Za-z%.-_@0-9A-Za-z%.-_]+$") | 
| jbe/bsw@0 | 46   then | 
| jbe@444 | 47     command[#command+1] = net._mail_config.envelope_from_option | 
| jbe@59 | 48     command[#command+1] = envelope_from | 
| jbe@5 | 49   end | 
| jbe@65 | 50   local stdout, errmsg, status = extos.pfilter(mail, table.unpack(command)) | 
| jbe@5 | 51   if not status then | 
| jbe@5 | 52     error("Error while calling sendmail: " .. errmsg) | 
| jbe/bsw@0 | 53   end | 
| jbe@5 | 54   if status == 0 then | 
| jbe@5 | 55     return true | 
| jbe@5 | 56   else | 
| jbe@5 | 57     return false | 
| jbe@5 | 58   end | 
| jbe/bsw@0 | 59 end |