【问题标题】:azure runbook send email in table using powershell workflowazure runbook 使用 powershell 工作流在表格中发送电子邮件
【发布时间】:2019-01-15 09:41:58
【问题描述】:

我了解有多个博客教授如何使用 html 和 css 格式发送电子邮件,但在 Azure Runbooks 的 PowerShell 工作流中似乎没有任何效果。

我想在电子邮件中发送计划的 Azure Runbook 的状态,该 Runbook 处理 Azure 分析表格模型,表格包含所有详细信息。

截至目前,我正在尝试发送带有基本边框的电子邮件。到目前为止,我已经使用了这个脚本:

<# 
	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 = "Prakhar.Saxena@Eriks.com"
$to = "Prakhar.Saxena@Eriks.com"
$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: Image Snippet Here

【问题讨论】:

    标签: azure powershell azure-automation azure-runbook


    【解决方案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 直到你得到你需要的东西。您需要为 tabletd 元素添加样式。

    【讨论】:

    • 谢谢@srsedate,我会试试这个解决方案。
    猜你喜欢
    • 2021-05-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-23
    • 2015-12-24
    • 2017-01-22
    • 1970-01-01
    • 2020-12-15
    相关资源
    最近更新 更多