iT邦幫忙

0

powershell ,Send-MailMessage HTML BODY的格式問題

請益大神們~

我用powershell下命令來派送Email,執行過程跟發信都ok
信的內文是我用excel巨集將excel檔整個sheet輸出成html檔,將html塞入$body內

但有個小小的困擾是 收件端是電腦端outlook的話,信的body內文就正常
(有EXCEL隔線、文字、粗細體、顏色...)

但是如果是手機端APP,版面就會跑掉,iphone、gmail、outlook...
iphone幾乎是跑掉最少,跟用電腦端看相似度9成以上

但如果用電腦端收信後,再轉寄一次,用手機端看經過轉寄的郵件就會完全正常
這個地方一直摸不著頭緒怎麼處理,是否還需要加上其它語法或命令?

會這樣作的原因是,高層們不喜歡用手機開附件
所以將excel的sheet攤開在郵件body上

$user = <user@??.com.tw>....
$me = <me@??.com.tw>
$Htmlfile = Get-Content D:\報表.htm 

    Send-MailMessage -To $user -From $me -Subject "【報表TEST】" -Body " $Htmlfile <br> "   -SmtpServer "172.16.1.250" -BodyAsHtml -Encoding ([System.Text.Encoding]::UTF8)

補上EXCEL產出的htm巨集

    With ThisWorkbook.PublishObjects.Add(SourceType:=xlSourceRange, _
    Filename:="D:\報表.htm", Sheet:="sheet1", Source:="$A$1:$K$15", _
    HtmlType:=xlHtmlStatic, DivID:="Book1_4170")
        .Publish (True)
        .AutoRepublish = False
    End With
看更多先前的討論...收起先前的討論...
froce iT邦大師 1 級 ‧ 2017-08-29 14:15:09 檢舉
這跟你的 powershell 關係不大吧,跟產出的 html 比較有關。
我也有這樣想過,但我想html語法是一個相對單純的東西,且我產出的htm檔view起來也很正常, 這case只是單純把html塞進去body而已,所以也不知道該改進甚麼...目前有點抓瞎
froce iT邦大師 1 級 ‧ 2017-08-29 14:54:19 檢舉
html 相對單純!?
各家 browser 對 html 的解釋都不太相同,你對excel這種軟體匯出的也太有信心了吧。

剛剛用了excel的匯出功能存了一個簡單沒做任何設定的 html,看了一下code髒的要死。這要其他瀏覽器不出事都難。

建議匯出CSV,然後由 powershell 去讀,產生html。
https://community.spiceworks.com/topic/1910571-powershell-with-csv-and-html
謝謝 @force 建議,但是匯出成CSV不就把本來excel內文的格式框線樣式...等 都破壞掉變成純文字了嗎?
froce iT邦大師 1 級 ‧ 2017-08-29 15:44:15 檢舉
https://technet.microsoft.com/en-us/library/ff730936.aspx?f=255&MSPPError=-2147217396
這裡有教你怎麼加回CSS,或許你可以用報表類別去判別要用什麼樣式,然後加回html裡。
或許可以再用附加檔案的方式把excel原檔附上。

html 的相容性可是一點都不簡單啊。
小魚 iT邦大師 1 級 ‧ 2017-08-30 00:53:46 檢舉
這部分你要學一下基本的Html跟CSS,而且你的Style要直接寫在Html標籤上
謝謝以上兩位的建議,
只是我比較在意的點是 "同樣"一字不差的HTML

用powershell塞進去郵件寄出 跟
直接放入mail內寄出,怎麼會結果不同,所以我一直覺的問題不是出在html上
Daniel iT邦新手 2 級 ‧ 2017-08-30 16:59:03 檢舉
把兩種信件都存檔看一下 html 原始碼,應該可以知道哪裡出問題。
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友回答

立即登入回答