Is there any solution on this?
I got the attachment solution as well, this depends on the email client.
For example, if Outlook.com is used, it shown as attachment. But if MailSpring is used, the logo directly shown.
I think this is related to some security issue.
I cannot get this done, and I think only solution is to override Mail.php or suggest PrestaShop to add a new hook before line 505 of Mail.php
if (isset($logo)) { $templateVars['{shop_logo}'] = $message->embed(\Swift_Image::fromPath($logo)); }
Something like:
Hook::exec('displayEmailCustomLogo',['logo' => $logo]);
So that developers can pass customized $logo before $message->embed