From d4979648e9b052f87bc408e3c45b649a6bb54389 Mon Sep 17 00:00:00 2001 From: Jason Stephenson Date: Fri, 15 Jul 2022 16:10:45 +0100 Subject: [PATCH] [Fix] Empty envelopes should not be emitted as arrays (json+messagepack) when populated envelopes are objects. This greatly complicates decoding in strictly typed languages. --- lualib/lua_mime.lua | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/lualib/lua_mime.lua b/lualib/lua_mime.lua index 4f8450964..575e9152c 100644 --- a/lualib/lua_mime.lua +++ b/lualib/lua_mime.lua @@ -596,7 +596,8 @@ exports.message_to_ucl = function(task, stringify_content) return nil end - -- Envelope (smtp) information form email + + -- Envelope (smtp) information from email (nil if empty) result.envelope = { from_smtp = (task:get_from('smtp') or E)[1], recipients_smtp = task:get_recipients('smtp'), @@ -605,6 +606,9 @@ exports.message_to_ucl = function(task, stringify_content) client_ip = maybe_stringify_ip(task:get_client_ip()), from_ip = maybe_stringify_ip(task:get_from_ip()), } + if not next(result.envelope) then + result.envelope = nil + end local parts = task:get_parts() or E result.parts = {} -- 2.39.5