Azure Runbook отправить электронную почту в таблице с помощью рабочего процесса PowerShell

Я понимаю, что существует несколько блогов, в которых рассказывается, как отправлять электронную почту с форматированием html и css, но, похоже, ничего не работает в рабочем процессе PowerShell в Azure Runbooks.

Я хочу отправить статус запланированного Azure Runbook, который обрабатывает табличную модель анализа Azure, в электронном письме с таблицей, содержащей все подробности.

As of now, I'm trying to send an email with basic borders. So far I have used this script:

<# 
	This PowerShell script was automatically converted to PowerShell Workflow so it can be run as a runbook.
	Specific changes that have been made are marked with a comment starting with “Converter:”
#>

workflow TablePS {
	
inlineScript {

# Create a DataTable
$table = New-Object system.Data.DataTable "TestTable"
$col1 = New-Object system.Data.DataColumn Name,([string])
$col2 = New-Object system.Data.DataColumn Dept,([string])
$table.columns.add($col1)
$table.columns.add($col2)

# Add content to the DataTable
$row = $table.NewRow()
$row.Name = "John"
$row.Dept = "Physics"
$table.Rows.Add($row)
$row = $table.NewRow()
$row.Name = "Susan"
$row.Dept = "English"
$table.Rows.Add($row)

# Create an HTML version of the DataTable
$html = "<table><tr><td>Name</td><td>Dept</td></tr>"
foreach ($row in $table.Rows)
{ 
    $html += "<tr><td>" + $row[0] + "</td><td>" + $row[1] + "</td></tr>"
}
$html += "</table>"
       
       $MyCredential = "DevCreds" 
       $Cred = Get-AutomationPSCredential -Name $MyCredential 
       $CredUsername = $Cred.UserName 
        $CredPassword = $Cred.GetNetworkCredential().Password 

# Send the email
$smtpserver = "smtp.office365.com"
$from = "[email protected]"
$to = "[email protected]"
$subject = "test"
$body = "Hi there,<br />Here is a table:<br /><br />" + $html
Send-MailMessage -smtpserver $smtpserver -UseSsl  -Port 587 -from $from -to $to -subject $subject -body $body -Credential $Cred  -bodyashtml

}
}

Но это мне не помогает. Я получаю формат таблицы без границ. Не могли бы вы, ребята, помочь мне в этом. PFB: фрагмент изображения здесь


person user3675870    schedule 08.08.2018    source источник


Ответы (1)


Отправляя электронные письма, помните, что ваши стили CSS должны быть встроенными, чтобы поддерживать большинство почтовых клиентов.

# Define your styles.
$borderWidth = "1px"
$borderStyle = "solid"
$borderColor = "rgba(255, 0, 0, 1)"
$borderStyles = @("border-width: $borderWidth;", "border-style: $borderStyle;", "border-color: $borderColor;")
$styleAttribute = " style=`"$borderStyles`""

Затем просто добавьте свой $styleAttribute туда, где вы хотите его применить.

# Create an HTML version of the DataTable
$html = "<table $styleAttribute><tr><td $styleAttribute>Name</td><td $styleAttribute>Dept</td></tr>"
foreach ($row in $table.Rows) { 
    $html += "<tr><td $styleAttribute>" + $row[0] + "</td><td $styleAttribute>" + $row[1] + "</td></tr>"
}
$html += "</table>"

Поиграйте с CSS, пока не получите то, что вам нужно. Вы захотите добавить стиль к своим элементам table и td.

person srbrills    schedule 08.08.2018
comment
Спасибо @srsedate, попробую это решение. - person user3675870; 15.08.2018