Yii2 Swiftmailer не может отправлять изображения и шрифт потрясающие иконки - PullRequest
0 голосов
/ 09 ноября 2018

Му Код контроллера:

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>

Выше приведено частичное представление рендера для подписи, содержащей изображение и шрифт. Значительные иконки. Основная проблема в этом файле.

Ответы [ 3 ]

0 голосов
/ 09 ноября 2018

если я не ошибаюсь, вам нужно использовать embed() или attach() для показа встроенных изображений в электронном письме.

$Imageid = $message->attach(Swift_Attachment::fromPath('path/to/image') 
       ->setDisposition('inline'));

, а затем используйте $cid для отображения изображения внутри текста электронного письма, где бы вы ни назначали текст для электронного письма

<img src="' . $Imageid . '" alt="Image" />'
0 голосов
/ 13 ноября 2018

Изображения

$this->theme->baseUrl вернет путь к теме, но без части домена и схемы (например, вернет /themes/my-theme). Когда вы генерируете URL-адреса для рассылки, вам нужно указать полный URL-адрес со схемой и доменом - вы должны сгенерировать URL-адреса примерно так:

<img src="<?= Yii::$app->request->getHostInfo() . $this->theme->getBaseUrl() ?>/images/email_signature.png">

Font Awesome Icons

У меня для вас плохие новости - многие клиенты (особенно веб-почта) не поддерживают веб-шрифты, поэтому вы не сможете использовать значки Font Awesome таким образом. Поддержка SVG еще хуже, так что это тоже не решение. Вы, вероятно, должны придерживаться старых добрых PNG в качестве иконок.

К сожалению, работа с рассылкой похожа на путешествие во времени - вы должны создавать свои электронные письма так же, как вы создавали свои сайты 10-20 лет назад. Забудьте о необычных функциях CSS3 - большинство пуленепробиваемых шаблонов по-прежнему создаются с использованием таблиц со встроенным CSS везде ...

0 голосов
/ 09 ноября 2018

Не каждый почтовый клиент поддерживает веб-шрифты. Поэтому, вероятно, лучше всего загрузить его в виде изображений, сохранить в папке общих ресурсов и вызвать его с тегом img element.

...