--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mod_email/mod_email.lua Fri Dec 13 12:46:44 2019 +0000
@@ -0,0 +1,47 @@
+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