| 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@5
 | 
    41   local command = {"/usr/sbin/sendmail", "-t", "-i"}
 | 
| 
jbe/bsw@0
 | 
    42   if
 | 
| 
jbe/bsw@0
 | 
    43     envelope_from and
 | 
| 
jbe/bsw@0
 | 
    44     string.find(envelope_from, "^[0-9A-Za-z%.-_@0-9A-Za-z%.-_]+$")
 | 
| 
jbe/bsw@0
 | 
    45   then
 | 
| 
jbe@5
 | 
    46     command[#command+1] = "-f"
 | 
| 
jbe@59
 | 
    47     command[#command+1] = envelope_from
 | 
| 
jbe@5
 | 
    48   end
 | 
| 
jbe@65
 | 
    49   local stdout, errmsg, status = extos.pfilter(mail, table.unpack(command))
 | 
| 
jbe@5
 | 
    50   if not status then
 | 
| 
jbe@5
 | 
    51     error("Error while calling sendmail: " .. errmsg)
 | 
| 
jbe/bsw@0
 | 
    52   end
 | 
| 
jbe@5
 | 
    53   if status == 0 then
 | 
| 
jbe@5
 | 
    54     return true
 | 
| 
jbe@5
 | 
    55   else
 | 
| 
jbe@5
 | 
    56     return false
 | 
| 
jbe@5
 | 
    57   end
 | 
| 
jbe/bsw@0
 | 
    58 end
 |