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