webmcp
annotate framework/env/net/send_mail.lua @ 5:4fb227630097
Version 1.0.5
Changes in net.send_mail{...}
- Code cleanup
- A boolean success value is returned
Changes in net.send_mail{...}
- Code cleanup
- A boolean success value is returned
author | jbe |
---|---|
date | Sat Jan 02 12:00:00 2010 +0100 (2010-01-02) |
parents | 9fdfb27f8e67 |
children | 4f9f7fef80ee |
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@5 | 47 comment[#command+1] = envelope_from |
jbe@5 | 48 end |
jbe@5 | 49 local stdout, errmsg, status = os.pfilter(mail, 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 |