none
Outlook, неправильное отображение HTML письма RRS feed

  • Вопрос

  • Коллеги, добрый день!

    Есть скрипт который формирует отчет примерно такого формата:

    <table border=1>
    <tr><td><b>Computer</b></td><td><b>OS Type</b></td><td><b>Drive</b></td><td><b>Total Space</b></td><td><b>Free Space</b></td><td><b>Percent</b></td></tr>
    <tr><td>server1</td><td>Microsoft Windows Server 2012 R2 Standard</td><td>C:<br></td><td>300<br></td><td>24<br></td>
    <td width=200><div style='border: 1px solid white;background-color: #00ff00; width: 8%;'>&nbsp</div></td></tr>
    </table>

    Далее отправляет по почте вот так:

    $mes = New-Object System.Net.Mail.MailMessage
    $mes.From = "it@domen.com"
    $mes.To.Add("it@domen.com") 
    $mes.Subject = $subject 
    $mes.IsBodyHTML = $TRUE
    $mes.Body = $bodyMes #get-content код, что я привел выше
    $mes.Priority = "high"
    $smtp = New-Object net.mail.smtpclient("mail.domen.com")
    $smtp.Send($mes)

    Проблема в отображении блока div в Outlook. Выглядит это таким образом:

    Если лог, что мы получаем через get-content сохранить как html, то выглядит это вот так (собственно как и должно быть, но в почте):

    Как исправить отображение в Outllok?

    PS MS Office 2013

    Заранее спасибо!

    6 февраля 2018 г. 10:52

Ответы

  • Забудьте про полный синтаксис. Попробуйте так:

    <table border=1><tr><td><b>Computer</b></td><td><b>OS Type</b></td><td><b>Drive</b></td><td><b>Total Space</b></td><td><b>Free Space</b></td><td><b>Percent</b></td></tr><tr><td>server1</td><td>Microsoft Windows Server 2012 R2 Standard</td><td>C:<br></td><td>300<br></td><td>24<br></td><td width=200><table width=20% border=0><TR><td style='background-color:#00ff00'>&nbsp;</td></tr></table></td></tr></table>


    Exchange and Outlook utilities at
    http://www.ivasoft.com

    • Помечено в качестве ответа Sergey Ya 12 февраля 2018 г. 11:47
    12 февраля 2018 г. 10:28

Все ответы

  • Возможно ваше сообщение формируется и отправляется Почтовой службой (.MAPIMail), которая все сообщения может отправлять только в формате текстового сообщения. Для отправки через Outlook, служат ключи к Outlook:

    /c ipm.note   - создать электронное сообщение;
    /a                 - Создание элемента с указанным файлом в качестве вложения.

    Дополнительно, внимательно изучите статью "Отправка через Outlook, документов вложением из контекстного меню Проводника.".

    P.S. Для получения независимого результата от используемой почтовой службы:

    Почему вы не используете для создания отчёта в Excel, и отправки вложенного файла Excel?


    Да, я Жук, три пары лапок и фасеточные глаза :))

    11 февраля 2018 г. 9:23
    Модератор
  • Добрый день!

    Для отправки почты использую объект System.Net.Mail.MailMessage

    В том, что формируется html документ сомнений нет. Так бы не было таблицы <table>

    Что касается excel, то куда удобней читать письмо, без вложений, нежели каждый раз открывать excel файл. Подобные отчет приходят каждый день.

    Пробовал разные варианты: <div width=123>; <table>........<table width=123></table>...</table>; style: px,%,em,pt. Все так же отображается криво.

    12 февраля 2018 г. 7:21
  • Здравствуйте,

    попробуйте использовать совет отсюда.


    Exchange and Outlook utilities at
    http://www.ivasoft.com

    Добрый день!

    Совета по моей проблеме я не нашел.

    У меня нет проблем с отображением цветов, проблема в ширине блока

    12 февраля 2018 г. 9:08
  • Там советуют использовать полный  CSS синтаксис.

    Вы пробовали? Можно взглянуть на переписанный HTML?


    Exchange and Outlook utilities at
    http://www.ivasoft.com

    Без проблем:

    <table border=1><tr><td><b>Computer</b></td><td><b>OS Type</b></td><td><b>Drive</b></td><td><b>Total Space</b></td><td><b>Free Space</b></td><td><b>Percent</b></td></tr>
    <tr><td>server1</td><td>Microsoft Windows Server 2012 R2 Standard</td><td>C:<br></td><td>119,61<br></td><td>31,85<br></td><td style='width: 200px;'><div style='border:1px solid white;background-color: #009900;width: 146px;'>&nbsp</div></td></tr>
    <tr><td>server2</td><td>Microsoft Windows Server 2012 R2 Standard</td><td>C:<br>E:<br>F:<br></td><td>89,66<br>200,00<br>70,00<br></td><td>12,72<br>64,36<br>68,64<br></td><td style='width: 200px;'><div style='border:1px solid white;background-color: #009900;width: 172px;'>&nbsp</div><div style='border:1px solid white;background-color: #009900;width: 136px;'>&nbsp</div><div style='border:1px solid white;background-color: #009900;width: 4px;'>&nbsp</div></td></tr>
    <tr><td>server3</td><td>Microsoft Windows Server 2012 R2 Standard</td><td>C:<br></td><td>79,61<br></td><td>18,00<br></td><td style='width: 200px;'><div style='border:1px solid white;background-color: #009900;width: 154px;'>&nbsp</div></td></tr>
    <tr><td>server4</td><td>Microsoft Windows Server 2012 R2 Standard</td><td>C:<br></td><td>79,66<br></td><td>22,35<br></td><td style='width: 200px;'><div style='border:1px solid white;background-color: #009900;width: 144px;'>&nbsp</div></td></tr>
    <tr><td>server5</td><td>Microsoft Windows Server 2012 R2 Standard</td><td>C:<br></td><td>30,00<br></td><td>17,19<br></td><td style='width: 200px;'><div style='border:1px solid white;background-color: #009900;width: 86px;'>&nbsp</div></td></tr>
    <tr><td>server6</td><td>Microsoft Windows Server 2012 R2 Standard</td><td>C:<br></td><td>35,67<br></td><td>13,42<br></td><td style='width: 200px;'><div style='border:1px solid white;background-color: #009900;width: 124px;'>&nbsp</div></td></tr>
    <tr><td>server7</td><td>Microsoft Windows Server 2012 R2 Standard</td><td>C:<br></td><td>39,66<br></td><td>17,72<br></td><td style='width: 200px;'><div style='border:1px solid white;background-color: #009900;width: 110px;'>&nbsp</div></td></tr>
    <tr><td>server8</td><td>Microsoft Windows Server 2012 R2 Standard</td><td>C:<br>E:<br></td><td>69,65<br>129,87<br></td><td>12,29<br>127,79<br></td><td style='width: 200px;'><div style='border:1px solid white;background-color: #009900;width: 164px;'>&nbsp</div><div style='border:1px solid white;background-color: #009900;width: 4px;'>&nbsp</div></td></tr>
    <tr><td>server9</td><td>Microsoft Windows Server 2012 R2 Standard</td><td>C:<br>E:<br>F:<br></td><td>89,66<br>200,00<br>70,00<br></td><td>12,71<br>64,36<br>68,64<br></td><td style='width: 200px;'><div style='border:1px solid white;background-color: #009900;width: 172px;'>&nbsp</div><div style='border:1px solid white;background-color: #009900;width: 136px;'>&nbsp</div><div style='border:1px solid white;background-color: #009900;width: 4px;'>&nbsp</div></td></tr>
    <tr><td>server10</td><td>Microsoft Windows Server 2008 R2 Standard </td><td>C:<br></td><td>318,87<br></td><td>46,42<br></td><td style='width: 200px;'><div style='border:1px solid white;background-color: #009900;width: 170px;'>&nbsp</div></td></tr>
    <tr><td>server11</td><td>Microsoft Windows Server 2008 R2 Standard </td><td>C:<br>D:<br></td><td>99,90<br>5119,87<br></td><td>72,28<br>2602,69<br></td><td style='width: 200px;'><div style='border:1px solid white;background-color: #009900;width: 56px;'>&nbsp</div><div style='border:1px solid white;background-color: #009900;width: 98px;'>&nbsp</div></td></tr>
    <tr><td>server12</td><td>Microsoft Windows Server 2012 R2 Standard</td><td>C:<br></td><td>39,95<br></td><td>18,84<br></td><td style='width: 200px;'><div style='border:1px solid white;background-color: #009900;width: 106px;'>&nbsp</div></td></tr>
    <tr><td>server13</td><td>Microsoft Windows Server 2008 R2 Standard </td><td>C:<br></td><td>49,87<br></td><td>7,89<br></td><td style='width: 200px;'><div style='border:1px solid white;background-color: #009900;width: 168px;'>&nbsp</div></td></tr>
    <tr><td>server14</td><td>Microsoft Windows Server 2008 R2 Standard </td><td>C:<br>E:<br>G:<br></td><td>99,87<br>1800,00<br>3000,00<br></td><td>54,86<br>349,53<br>1523,36<br></td><td style='width: 200px;'><div style='border:1px solid white;background-color: #009900;width: 90px;'>&nbsp</div><div style='border:1px solid white;background-color: #009900;width: 162px;'>&nbsp</div><div style='border:1px solid white;background-color: #009900;width: 98px;'>&nbsp</div></td></tr>
    <tr><td>server15</td><td>Microsoft Windows Server 2012 R2 Standard</td><td>C:<br></td><td>297,12<br></td><td>97,20<br></td><td style='width: 200px;'><div style='border:1px solid white;background-color: #009900;width: 134px;'>&nbsp</div></td></tr>
    </table>
    

    Далее отправляю этот код по почте вот так:

    $mes = New-Object System.Net.Mail.MailMessage
    $mes.From = $mailFrom
    $mes.To.Add($mailTo) 
    $mes.Subject = "Free Space" 
    $mes.IsBodyHTML = $TRUE
    $mes.Body = [string]$(Get-Content -Path $export)
    $mes.Priority = "high"
    $smtp = New-Object net.mail.smtpclient($mailServer)
    $smtp.Send($mes)

    12 февраля 2018 г. 10:12
  • Немного не понял, что вы имели ввиду Использовать полный CSS синтаксис.

    12 февраля 2018 г. 10:15
  • Огромное спасибо, заработало!

    Очень странно.. Я тоже пробовал через <table>, вот только ширину выставлял в <td> и не срабатывало.

    12 февраля 2018 г. 11:47