在 CakePHP3 电子邮件中嵌入图像

Embed image in CakePHP3 Email

原问题

我正在使用 CakePHP 3 的 Mailer Aware 特性发送电子邮件。

我的邮件正在使用此功能发送:

public function forgotPassword($user,$password)
{
    $this
        ->from(['no-reply@deltabec.com' => 'DeltaBEC Intraweb'])
        ->emailFormat('html')
        ->to([$user->email => $user->name . ' ' . $user->surname])
        ->subject('New Intraweb Password')
        ->template('Users' . DS . 'forgot_password', 'default')
        ->attachments([[
            'file' => WWW_ROOT . 'img' . DS . 'logo-dark.png',
            'mimetype' => 'image/png',
            'contentId' => 'company_logo'
        ]])
        ->viewVars(compact('user','password'));
}

在我的电子邮件中我有这个:

<?= $this->Html->image('cid:company_logo'); ?>

但是我的邮件是这样发送的:

我做错了什么?它没有在电子邮件中嵌入图像是有原因的吗?

编辑 1 - 发现

所以我把邮件保存为html。这就是它向我展示的内容:

<img id="_x0000_i1025" src="/cakesite/img/cid%3Acompany_logo">

似乎它正在对 link 进行编码并放置整个 URL 而不仅仅是 cid

编辑 2 - 功能请求

我希望它能像我使用的那样工作。我这样做的方式没有任何根本性的错误,所以我在 Github 上添加了一张票,以便可以对其进行讨论,并希望它被添加。

HTML 助手 image() 方法,分别是 URL 助手,无法识别特殊的 cid 方案,或任何其他不使用的方案//: 之后,因此将尝试创建图像资产 URL。

这可能是一个增强请求,或者甚至可能被视为一个错误,因此您可能想要打开一个工单 over at GitHub

现在,只需放弃使用助手并手动创建 <img> 标签。