/* This file is part of »munin«. Copyright 2025 'Fenris Wolf' »munin« is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. »munin« is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with »munin«. If not, see . */ namespace _munin.targets.email { /** */ export type type_parameters = { smtp_host : string; smtp_port : int; smtp_username : string; smtp_password : string; sender : string; receivers : Array; /** * in hours */ reminders : Array; }; /** */ async function send( parameters : type_parameters, labels : _munin.type_labels, event : _munin.type_event ) : Promise { await lib_plankton.email.send( { "host": parameters.smtp_host, "port": parameters.smtp_port, "username": parameters.smtp_username, "password": parameters.smtp_password, }, parameters.sender, parameters.receivers, lib_plankton.string.coin( "[{{head}}] {{date}} : {{title}}", { "head": labels.head, "date": lib_plankton.pit.date_format(event.begin.date), "title": event.title, } ), lib_plankton.string.coin( "*{{head}}*\n\n\{{title_label}} | {{title_value}}\n{{time_label}} | {{time_value}}{{macro_location}}", { "head": labels.head, "title_label": labels.title.toUpperCase(), "title_value": event.title, "time_label": labels.time.toUpperCase(), "time_value": lib_plankton.pit.timespan_format(event.begin, event.end), "macro_location": ( (event.location === null) ? "" : lib_plankton.string.coin( "\n{{location_label}} | {{location_value}}", { "location_label": labels.location.toUpperCase(), "location_value": event.location, } ) ), } ) ); } /** */ export function implementation_target( parameters : type_parameters ) : _munin.type_target { return { "reminders": parameters.reminders, "show": () => lib_plankton.string.coin( "email:{{receivers}}", { "receivers": parameters.receivers.join(","), } ), "send": (labels, event) => send(parameters, labels, event), }; } }