Yii2 Swiftmailer 无法发送图像和字体真棒图标
Yii2 Swiftmailer can't send image and font awesome icons
Mu控制器代码:
if ($model->load(Yii::$app->request->post())) {
$data = $this->renderPartial('receivers/contact_form_output_quick_query', [
'model' => $model,
'formData' => $_REQUEST], true);
$receiver_message = $this->renderPartial('receivers/receiver_message_quick_query',['data' => $data]);
$message = Yii::$app->mailer->compose();
$message->setFrom('info@company.com')
->setTo('info@company.com')
->setSubject('Subject Of email')
->setHtmlBody($data)
->send();
$message = Yii::$app->mailer->compose();
$message->setFrom('info@company.com')
->setTo($model->email)
->setSubject('Reply: Online Query')
->setHtmlBody($receiver_message)
->send();
Yii::$app->session->setFlash('success', 'Congratulations! Your message has been successfully Sent.');
}
谁能告诉我图像和 Font Awesome 图标发送不正确的主要原因是什么?
我的收件人消息部分视图在此处:
<div>
<table style="width: 600px;">
<tr>
<td>Thanks for your interest in our services. We have received your online query.</td>
</tr>
<tr>
<td>Thanks again for contacting us.</td>
</tr>
<tr>
<td style="height: 5px;"></td>
</tr>
<tr>
<td>(It may take some time depending upon the number of queries in the pipeline. We appreciate your cooperation in this regard.)</td>
</tr>
<tr>
<td>Regards!</td>
</tr>
</table>
<?= $this->render('signature'); ?>
<table>
<tr>
<td><strong style="font-size:16px;">Query Details that we received:</strong></td>
</tr>
<tr>
<td><?= $data; ?></td>
</tr>
</table>
</div>
以上是接收消息的渲染局部视图:
我的签名部分观点是:
<link rel="stylesheet" type="text/css" href="https://stackpath.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css">
<table>
<tr>
<td colspan="3">
<img src="<?= $this->theme->baseUrl?>/images/email_signature.png">
</td>
</tr>
<tr>
<td style="height: 30px;"></td>
</tr>
<tr>
<td>+123456778</td>
<td colspan="2"> | +123456778</td>
</tr>
<tr>
<td>http://www.example.com</td>
<td>| info@company.com </td>
<td>| <b>Skype:</b> skypeid</td>
</tr>
<tr>
<td><a target="_blank" href="https://www.linkedin.com"><i class="fa fa-linkedin"></i> Linked In | </a></td>
<td><a target="_blank" href="https://www.facebook.com"><i class="fa fa-facebook"></i> Facebook | </a></td>
<td><a target="_blank" href="https://twitter.com"><i class="fa fa-twitter"></i> https://www.twitter.com</a></td>
</tr>
以上是包含图像和字体真棒图标的签名的渲染局部视图,主要问题出在这个文件中。
并非每个邮件客户端都支持网络字体。所以可能最适合你的是将它下载为图像,将它保存在你的 public 资产文件夹中并使用 img
元素标签调用它。
如果我没记错的话,您需要使用 embed()
或 attach()
来在电子邮件中显示内联图像。
$Imageid = $message->attach(Swift_Attachment::fromPath('path/to/image')
->setDisposition('inline'));
然后使用 $cid
在您为电子邮件分配文本的位置显示电子邮件文本中的图像
<img src="' . $Imageid . '" alt="Image" />'
图片
$this->theme->baseUrl
将 return 主题路径,但没有域和方案部分(例如它将 return /themes/my-theme
)。当您生成用于邮寄的 URLs 时,您需要使用方案和域填写 URL - 您应该像这样生成 URLs:
<img src="<?= Yii::$app->request->getHostInfo() . $this->theme->getBaseUrl() ?>/images/email_signature.png">
超棒的字体图标
我有一个坏消息要告诉你 - 许多客户端(尤其是网络邮件)不支持网络字体,所以你将无法以这种方式使用 Font Awesome 图标。对 SVG 的支持更差,所以这也不是解决方案。您可能应该坚持使用良好的旧 PNG 作为图标。
不幸的是,处理邮件就像是一次时间旅行 - 您应该像 10-20 年前创建网站一样构建电子邮件。忘掉花哨的 CSS3 功能吧——大多数防弹模板仍然是使用带有内联 CSS 的表格构建的...
Mu控制器代码:
if ($model->load(Yii::$app->request->post())) {
$data = $this->renderPartial('receivers/contact_form_output_quick_query', [
'model' => $model,
'formData' => $_REQUEST], true);
$receiver_message = $this->renderPartial('receivers/receiver_message_quick_query',['data' => $data]);
$message = Yii::$app->mailer->compose();
$message->setFrom('info@company.com')
->setTo('info@company.com')
->setSubject('Subject Of email')
->setHtmlBody($data)
->send();
$message = Yii::$app->mailer->compose();
$message->setFrom('info@company.com')
->setTo($model->email)
->setSubject('Reply: Online Query')
->setHtmlBody($receiver_message)
->send();
Yii::$app->session->setFlash('success', 'Congratulations! Your message has been successfully Sent.');
}
谁能告诉我图像和 Font Awesome 图标发送不正确的主要原因是什么?
我的收件人消息部分视图在此处:
<div>
<table style="width: 600px;">
<tr>
<td>Thanks for your interest in our services. We have received your online query.</td>
</tr>
<tr>
<td>Thanks again for contacting us.</td>
</tr>
<tr>
<td style="height: 5px;"></td>
</tr>
<tr>
<td>(It may take some time depending upon the number of queries in the pipeline. We appreciate your cooperation in this regard.)</td>
</tr>
<tr>
<td>Regards!</td>
</tr>
</table>
<?= $this->render('signature'); ?>
<table>
<tr>
<td><strong style="font-size:16px;">Query Details that we received:</strong></td>
</tr>
<tr>
<td><?= $data; ?></td>
</tr>
</table>
</div>
以上是接收消息的渲染局部视图:
我的签名部分观点是:
<link rel="stylesheet" type="text/css" href="https://stackpath.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css">
<table>
<tr>
<td colspan="3">
<img src="<?= $this->theme->baseUrl?>/images/email_signature.png">
</td>
</tr>
<tr>
<td style="height: 30px;"></td>
</tr>
<tr>
<td>+123456778</td>
<td colspan="2"> | +123456778</td>
</tr>
<tr>
<td>http://www.example.com</td>
<td>| info@company.com </td>
<td>| <b>Skype:</b> skypeid</td>
</tr>
<tr>
<td><a target="_blank" href="https://www.linkedin.com"><i class="fa fa-linkedin"></i> Linked In | </a></td>
<td><a target="_blank" href="https://www.facebook.com"><i class="fa fa-facebook"></i> Facebook | </a></td>
<td><a target="_blank" href="https://twitter.com"><i class="fa fa-twitter"></i> https://www.twitter.com</a></td>
</tr>
以上是包含图像和字体真棒图标的签名的渲染局部视图,主要问题出在这个文件中。
并非每个邮件客户端都支持网络字体。所以可能最适合你的是将它下载为图像,将它保存在你的 public 资产文件夹中并使用 img
元素标签调用它。
如果我没记错的话,您需要使用 embed()
或 attach()
来在电子邮件中显示内联图像。
$Imageid = $message->attach(Swift_Attachment::fromPath('path/to/image')
->setDisposition('inline'));
然后使用 $cid
在您为电子邮件分配文本的位置显示电子邮件文本中的图像
<img src="' . $Imageid . '" alt="Image" />'
图片
$this->theme->baseUrl
将 return 主题路径,但没有域和方案部分(例如它将 return /themes/my-theme
)。当您生成用于邮寄的 URLs 时,您需要使用方案和域填写 URL - 您应该像这样生成 URLs:
<img src="<?= Yii::$app->request->getHostInfo() . $this->theme->getBaseUrl() ?>/images/email_signature.png">
超棒的字体图标
我有一个坏消息要告诉你 - 许多客户端(尤其是网络邮件)不支持网络字体,所以你将无法以这种方式使用 Font Awesome 图标。对 SVG 的支持更差,所以这也不是解决方案。您可能应该坚持使用良好的旧 PNG 作为图标。
不幸的是,处理邮件就像是一次时间旅行 - 您应该像 10-20 年前创建网站一样构建电子邮件。忘掉花哨的 CSS3 功能吧——大多数防弹模板仍然是使用带有内联 CSS 的表格构建的...