Поведение фонового изображения ячейки в Outlook

У меня проблема с Outlook (сюрприз) и фоновое изображение в ячейке таблицы. Теперь проблема в том, что я могу заставить его работать в 99% версий Outlook, за исключением настольной версии 2016 года, работающей на Windows 10.

Вот код для блока:

<table align="center" bgcolor="#ffffff" border="0" cellpadding="0" cellspacing="0" class="w-full" style="vertical-align:top; width: 640px;" width="640">
<tr>
    <td class="w-full" background="http://via.placeholder.com/640x320" bgcolor="#7bceeb" width="640" valign="top">
            <!--[if gte mso 9]>
<v:rect xmlns:v="urn:schemas-microsoft-com:vml" fill="true" stroke="false" style="width:1280px;">
<v:fill type="tile" src="http://via.placeholder.com/640x320" color="#ffffff" />
<v:textbox style="mso-fit-shape-to-text:true" inset="0,0,0,0">
<![endif]-->
            <div>
                <table align="" border="0" cellpadding="0" cellspacing="0" class="w-full" style="vertical-align:top;" width="640">
                    <tr>
                        <td valign="top">
                            <table border="0" cellpadding="0" cellspacing="0" class="w-full" width="640">
                                <tr>
                                    <td height="35" style="text-align: center;"> </td>
                                </tr>
                                <tr>
                                    <td align="center" style="color:#FFFFFF; font-size:24px;">
                                        <div style="font-family:'Century Gothic', Helvetica, Arial, sans-serif; color: #ffffff; text-transform: uppercase;"> <font face="'Century Gothic', Helvetica, Arial, sans-serif"><span style="font-size:44px;">Lorem Ipsum</span><br>
                                      <br>
                                      <span style="font-size:24px;">SOME TEXT HERE<br>
                                      with a page break here</span></font>
                                            <br>
                                            <br> &nbsp;</div>
                                        <table align="center" border="0" cellpadding="0" cellspacing="0">
                                            <tr>
                                                <td align="center" style=" font-family:'Century Gothic', Helvetica, Arial, sans-serif; font-size:14px; color:#ffffff; text-transform: uppercase; font-weight: bold;"> <a href="#" style="color:#ffffff; text-decoration:none; padding:14px 30px; display:inline-block; border:solid 1px #ffffff;" target="_blank">CTA Text</a></td>
                                            </tr>
                                        </table>
                                    </td>
                                </tr>
                                <tr>
                                    <td height="35"> </td>
                                </tr>
                            </table>
                        </td>
                    </tr>
                </table>
            </div>
            <!--[if gte mso 9]>
</v:textbox>
</v:rect>
<![endif]-->
        </td>
</tr>
</table>

и это даст такой результат: 2016 Desktop

Тем не менее, он убивает другие версии: все другие версии

Если я уменьшу ширину VML с 1280 пикселей до того, что ДОЛЖНО быть (640 пикселей), он исправит все остальные версии, но только даст мне половину изображения в настольном клиенте (в основном полярную противоположность).

Теперь я понимаю, что этот настольный клиент, вероятно, выполняет рендеринг с более высоким разрешением / разрешением, поэтому удвоение ширины дает мне правильный результат, а фактическая ширина дает мне половину ячейки.

Мой вопрос заключается в том, есть ли обходной путь / хак, который позволит мне отображать с двойной шириной в этом клиенте, и другие будут игнорировать это правило?

Буду признателен за любую помощь, так как я не могу найти нигде информации, заранее спасибо.

1 ответ

После недели охоты я наткнулся на эту статью, в которой рассматривается проблема, с которой я столкнулся:

Решение проблем масштабирования DPI с помощью электронной почты в формате HTML в Outlook

Было очень ясно, почему это ломается и как противостоять этому, поэтому я очень рекомендую проверить это, чтобы полностью понять проблему.


Однако, если вы спешите и просто хотите быстро исправить код, вам нужно вставить следующий код в тег HTML вашего шаблона:

<html xmlns="http://www.w3.org/1999/xhtml" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office">

Это говорит Outlook, что ожидать. Затем вам нужно будет вставить этот код в раздел HEAD вашего шаблона непосредственно перед закрытием:

<Head>
<!--[if gte mso 9]>
    <xml>
        <o:OfficeDocumentSettings>
        <o:AllowPNG/>
        <o:PixelsPerInch>96</o:PixelsPerInch>
        </o:OfficeDocumentSettings>
    </xml>
<![endif]-->
</Head>

и, наконец, как и раньше (см. оригинальный вопрос), вам нужно точно указать ячейке, что ей нужно делать с чем-то похожим на:

<!--[if gte mso 9]>
<v:rect xmlns:v="urn:schemas-microsoft-com:vml" fill="true" stroke="false" style="width:640px;">
<v:fill type="tile" src="http://via.placeholder.com/640x320" color="#ffffff" />
<v:textbox style="mso-fit-shape-to-text:true" inset="0,0,0,0">

Очевидно, что нужно настроить свои собственные электронные письма, но это сработало для меня. Я надеюсь, что этот ответ поможет другим, так же как и мне, когда он сводится к масштабированию DPI на новых машинах с мониторами с более высоким разрешением!

Полный кредит "Джеймсу" за это решение.

Другие вопросы по тегам