我有一個Powershell腳本,其中有一部分需要通過電子郵件發送一些信息。我有要求在郵件正文中包含2條信息,但我遇到了格式問題。第一部分將是一行文本,我想簡單地將它作爲變量存儲在powershell腳本中,第二部分將是來自文本文件的信息。以下是我想要做的簡化版本:Powershell在電子郵件正文中使用字符串和文件內容而不會破壞格式化
$INFO1="The following fruits are ready to eat:
"
$INFO2=get-content "info2.txt"
$BODY=$INFO1 + $INFO2
$BODY=$BODY | out-string
send-mailmessage -To [email protected] -Subject "Fruit Status" -From
[email protected] -Body $BODY -Smtpserver smtp.mydomain.org -UseSsl
文件info2.txt包含以下信息。 3列水果與標籤分離器的列表:
Col1 Col2 Col3
Apple Orange Pear
Banana Grape Strawbery
Kiwi Peach Apricot
上面的代碼工作,但我收到一封電子郵件,看起來像這樣:
The following fruits are ready to eat:
Col1 Col2 Col3 Apple Orange Pear Banana Grape
Strawbery Kiwi Peach Apricot
它保持在$ INFO1存儲變量的行空間字符串,但是隨後將info2.txt文件的內容全部放在一個連續的行中,沒有換行符或選項卡式格式。
我測試了下面的變化,從$ INFO1變量中獲得的文本行是通過在名爲「info1.txt」的文件中對同一段文本執行get-content獲得的。當我將這兩條信息附加到郵件正文中時,格式將保持不變,並且電子郵件看起來沒問題。
$INFO1=get-content "info1.txt"
$INFO2=get-content "info2.txt"
$BODY=$INFO1 + $INFO2
$BODY=$BODY | out-string
send-mailmessage -To [email protected] -Subject "Fruit Status" -From
[email protected] -Body $BODY -Smtpserver smtp.mydomain.org -UseSsl
The following fruits are ready to eat:
Col1 Col2 Col3
Apple Orange Pear
Banana Grape Strawbery
Kiwi Peach Apricot*
我也注意到,如果我做以下使用第一種方法,先抓住了文件內容,從變量的字符串,格式也保持罰款:
$BODY=$INFO2 + $INFO1
只有當我首先從變量的字符串開始,它將文件內容部分的電子郵件中的格式化。
我寧願保持腳本更緊湊,並儘量減少寫入磁盤上的文件和使用存儲的變量。有沒有一種方法可以使用方法1附加一個字符串或多個字符串,然後是保存格式的文件內容?我不希望爲此使用HTML,因爲它會使我正在處理的文本文件內容過於複雜,因此,body只是-body而不是-bodyashtml,除非這是排序的唯一方法。
我假設你的表格數據在$ INFO2中。你能分享一下,如果你運行一個寫主機,Info2的外觀如何?另外,你能否清楚地突出你的問題? – Dom