Yes because image var is set after that hook is called registered by you so reflection of that in code
if (false !== Configuration::get('PS_LOGO_MAIL') &&
file_exists(_PS_IMG_DIR_ . Configuration::get('PS_LOGO_MAIL', null, null, $idShop))
) {
$logo = _PS_IMG_DIR_ . Configuration::get('PS_LOGO_MAIL', null, null, $idShop);
} else {
if (file_exists(_PS_IMG_DIR_ . Configuration::get('PS_LOGO', null, null, $idShop))) {
$logo = _PS_IMG_DIR_ . Configuration::get('PS_LOGO', null, null, $idShop);
} else {
$templateVars['{shop_logo}'] = '';
}
}
ShopUrl::cacheMainDomainForShop((int) $idShop);
/* don't attach the logo as */
if (isset($logo)) {
$templateVars['{shop_logo}'] = $message->embed(\Swift_Image::fromPath($logo));
}
You can try by adding actionGetExtraMailTemplateVars hook and add at same index so while merging it update that var and reflect your new image
// Get extra template_vars
$extraTemplateVars = [];
Hook::exec(
'actionGetExtraMailTemplateVars',
[
'template' => $template,
'template_vars' => $templateVars,
'extra_template_vars' => &$extraTemplateVars,
'id_lang' => (int) $idLang,
],
null,
true
);
$templateVars = array_merge($templateVars, $extraTemplateVars);