Hi, da passt die Syntax an 2 Stellen nicht ganz.
Hier ist die Funktion für das Senden einer E-Mail, die Reihenfolge musst du einhalten:
instance.mail_send(
subject TEXT,
body TEXT,
to_list TEXT DEFAULT '',
cc_list TEXT DEFAULT '',
bcc_list TEXT DEFAULT '',
account_name TEXT DEFAULT NULL,
attach_record_id INTEGER DEFAULT NULL,
attach_attribute_id UUID DEFAULT NULL
) => INTEGER
das heißt, so wie du die Funktion aktuell absendest, würde "inhalt" als TO gewertet werden.
Du musst den Body vor dem Funktionsaufruf zusammenbauen, oder während des Aufrufes(zb PERFORM instance.mail_send(subject,CONCAT(text1,text2),to_list,NULL,NULL,account_name); ).
Weiterhin würde dein SELECT Statement nur den "name" zurückgeben, da du alle in eine Text Variable speicherst.
Es gibt mehrere Wege, wie du das kombinieren kannst, aber es könnte in etwa so aussehen:
$BODY$
DECLARE
subject text := 'Neue Bestellung eingegangen';
body text := 'Dies ist ein Test Body';
inhalt_name TEXT;
inhalt_strasse TEXT;
inhalt_ort TEXT;
to_list text := 'eine Emailadresse'
account_name text := 'gmx';
BEGIN
SELECT name,strasse,ort INTO inhalt_name,inhalt_strasse,inhalt_ort
FROM {test}.[node] -- hier meine Relation eingetragen, in der die Daten stehen
WHERE (test.node.id) = NEW.(test.node.id); -- wird hier die ID des Datensatzes hinterlegt ?
body := CONCAT(body,'<br>',inhalt_name,' ',inhalt_strasse,' ',inhalt_ort);
PERFORM instance.mail_send(subject,body,to_list,NULL,NULL,account_name);
RETURN NEW;
END;
$BODY$
Kurzer Nachtrag: Ich kenne deine Anwendung natürlich nicht 🙂 Aber, da du dies als Trigger (Return NEW) durchführst, gehe ich mal davon aus, dass du dies nach dem Erstellen eines Datensatzes durchführst. Je nachdem wie du es gebaut hast, kannst du auf das SELECT Statement und die meisten Variablen verzichten und stattdessen so arbeiten:
body := CONCAT(body,'<br>',NEW.(test.node.name),' ',NEW.(test.node.strasse),' ',NEW.(test.node.ort));
(aber wie gesagt, nur eine Mutmaßung)