webmcp

annotate framework/env/net/send_mail.lua @ 444:5d307886bd89

Added net.configure_mail{...} function to allow other mail interfaces than sendmail
author jbe
date Sun Feb 28 19:16:03 2016 +0100 (2016-02-28)
parents a54cc7dcabf1
children b7596f5158d4
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

Impressum / About Us