Mercurial > prosody-modules
view mod_email/mod_email.lua @ 3814:0dede5b0ab27
mod_rest: Fix return status when sending and forgetting
Turns out module:send() doesn't return anything, so there's no way to
know if it was routed successfully.
author | Kim Alvefur <zash@zash.se> |
---|---|
date | Wed, 01 Jan 2020 16:35:55 +0100 |
parents | 74d7e59b3511 |
children | 070faeaf51bc |
line wrap: on
line source
module:set_global(); local moduleapi = require "core.moduleapi"; local smtp = require"socket.smtp"; local config = module:get_option("smtp", { origin = "prosody", exec = "sendmail" }); local function send_email(to, headers, content) if type(headers) == "string" then -- subject headers = { Subject = headers; From = config.origin; }; end headers.To = to; headers["Content-Type"] = 'text/plain; charset="utf-8"'; local message = smtp.message{ headers = headers; body = content; }; if config.exec then local pipe = io.popen(config.exec .. " '"..to:gsub("'", "'\\''").."'", "w"); for str in message do pipe:write(str); end return pipe:close(); end return smtp.send({ user = config.user; password = config.password; server = config.server; port = config.port; domain = config.domain; from = config.origin; rcpt = to; source = message; }); end assert(not moduleapi.send_email, "another email module is already loaded"); function moduleapi:send_email(email) --luacheck: ignore 212/self return send_email(email.to, email.headers or email.subject, email.body); end