составить новый Outlook письмо с HTML-шаблоном - PullRequest
0 голосов
/ 24 сентября 2018

Мой сценарий PowerShell открывает новое окно электронной почты compose outlook и устанавливает тело в строку, содержащую HTML, но не отображает HTML.Есть идеи как этого добиться?

function Prepare_Outlook_email( $subject, $body, $to){
    $ol = New-Object -comObject Outlook.Application
    $mail = $ol.CreateItem(0)
    $mail.Subject = $subject
    $mail | Get-Member
    # $mail.IsBodyHTML = $true  ###doesnt work
    # $mail.HTMLBody = $body ###doesnt work the email format is already HTML
    $mail.Body = $body
    $mail.To = $to 
    $inspector = $mail.GetInspector
    $inspector.Activate()
}

$body - следующая строка.

<html>
    <head>
        <title>test</title>
    </head>
    <body>
        <table>
            <tr>
                <td>
                    Dear firstname,
                    Please visit <a href="www.google.com">here</a>

                    Kind Regards,
                </td>
            </tr>
        </table>
    </body>
</html>

Любые идеи о том, как заставить HTML интерпретироваться.Основная проблема заключается в том, что мне нужно иметь возможность вставлять гиперссылки.Я мог бы жить с HTML, который не интерпретируют, если вы можете сказать мне другой способ заставить работать гиперссылки.

Я нашел этот старый пост, в котором предлагалось использовать { HYPERLINK ="www.google.com" }, но, похоже, он тоже не работал.

enter image description here

1 Ответ

0 голосов
/ 24 сентября 2018

Во-первых, должно быть установлено только свойство HTMLBody.Настройка Body перезаписывает HTML.Во-вторых, вы, вероятно, хотите заменить некоторые разделы вашего шаблона (firstname).Пожалуйста, смотрите полный пример ниже:

#replaceable parts marked using #
$body = @'
<html>
    <head>
        <title>test</title>
    </head>
    <body>
        <table>
            <tr>
                <td>
                    Dear #firstname#,
                    Please visit <a href="www.google.com">here</a>

                    Kind Regards,
                </td>
            </tr>
            <tr>
                <td>
                    <a href="#link1#">Click here</a>
                </td>
            </tr>only 
        </table>
    </body>
</html>
'@

$subject = 'Sample subject'

$parameters = @{
    firstname='MyName';
    link1='www.google.com'
}

#replace parts using dictionaryc as source
foreach ($pair in $parameters.GetEnumerator()) {
    $body = $body -replace "#$($pair.Key)#",$pair.Value
}

$ol = New-Object -comObject Outlook.Application
$mail = $ol.CreateItem(0)
$mail.Subject = $subject
#set HTML body only
$mail.HTMLBody = $body
$inspector = $mail.GetInspector
$inspector.Activate()

Результат:

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...