Pergunta

I am using below code in Powershell to get Email in proper table format from a plain text file output.txt:

code.ps1

$smtpServer = "sunny@domain.com"
$smtpFrom = "process@abc.com"
$smtpTo = "sunny@abc.com"
$messageSubject = "Data"

$message = New-Object System.Net.Mail.MailMessage $smtpfrom, $smtpto
$message.Subject = $messageSubject
$message.IsBodyHTML = $true

$body = Get-Content C:\output.txt | Out-String
$body = $body -replace '^(\S+)\s+(\S+)\s+(\S+)', '<tr><th style = "border: 1px solid black; background: #dddddd; padding: 5px;">$1</th><th style = "border: 1px solid black;   background: #dddddd; padding: 5px;">$2</th><th style = "border: 1px solid black; background: #dddddd; padding: 5px;">$3</th></tr>'
$body = $body -replace '\n(\S+)\s+(\S+)\s+(\S+)', '<tr><td style = "border: 1px solid black; padding: 5px;">$1</td><td style = "border: 1px solid black; padding: 5px;">$2</td><td style = "border: 1px solid black; padding: 5px;">$3</td></tr>'
$body = '<body><table style = "border: 1px solid black; border-collapse: collapse;">' + $body + '</table></body>'
$message.Body = $body

$smtp = New-Object Net.Mail.SmtpClient($smtpServer)
$smtp.Send($message)

I want to do following changes in receiving Email structure:

Change1:

Email is coming in below format in table:

OPERATINGSYSTEM           PROJECTSERVER1   PROJECTSERVER2
Windows                   1.36             4.42
Linux12                   2.78             5.76
MacOS                     3.45             6.39
Ubuntu                    4.12             0.00
Android                   0.00             3.46
FreePhysicalMemory        30.12            31.65
TotalVisibleMemorySize    48.00            48.00
CPULoadPercentage         2                4

but, how can i align the values for 2nd and 3rd columns only in center like below?

OPERATINGSYSTEM           PROJECTSERVER1   PROJECTSERVER2
Windows                       1.36             4.42
Linux12                       2.78             5.76
MacOS                         3.45             6.39
Ubuntu                        4.12             0.00
Android                       0.00             3.46
FreePhysicalMemory           30.12            31.65
TotalVisibleMemorySize       48.00            48.00
CPULoadPercentage              2                4

Change2:

How i can add below notes at end, outside of table in email body:

All memory values are in GB.

Note: This is an automatically generated email, please don't reply to it.

Change3:

How i can send this Email to multiple recipients with multiple CC's. Can i add email ids separated by commas like $smtpTo = "administrator@abc.com,dbadmin@abc.com..." ..?

Foi útil?

Solução

Change1: Change your table row definition from

$body = $body -replace '\n(\S+)\s+(\S+)\s+(\S+)', '<tr><td style = "border: 1px solid black; padding: 5px;">$1</td><td style = "border: 1px solid black; padding: 5px;">$2</td><td style = "border: 1px solid black; padding: 5px;">$3</td></tr>'

to

$body = $body -replace '\n(\S+)\s+(\S+)\s+(\S+)', '<tr><td style = "border: 1px solid black; padding: 5px;">$1</td><td style = "border: 1px solid black; padding: 5px;text-align:center;">$2</td><td style = "border: 1px solid black; padding: 5px;text-align:center;">$3</td></tr>'

Explanation: Added text-align:center to the style definition of the table cells.

Change2: Just add the text at the end of the mail:

$body = '<body><table style = "border: 1px solid black; border-collapse: collapse;">' + $body + '</table><br/>All memory values are in GB.<br/><br/>Note: This is an automatically generated email, please don't reply to it.<br/></body>'

Change3: According to http://msdn.microsoft.com/en-us/library/vstudio/h1s04he7(v=vs.100).aspx you are correct: add multiple email adresses separated by ,

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top