[英]Send-Mailmessage from command with variable body
下面的腳本應該檢查文件是否今天已創建,並向我們的一個用戶發送電子郵件。
問題是我不能在體內發送多個值。 我需要從正文中刪除“文件”以獲取電子郵件。 每個文件還有一封電子郵件。 我將其重寫為發送一封帶有日期列出的所有文件的郵件。
@echo off
setlocal enabledelayedexpansion
echo Files changed today %date%
FOR %%A IN (*.*) DO (
set tf=%%~tA
set fd=!tf:~0,10!
if !fd!==%date% (
powershell -ExecutionPolicy ByPass -Command Send-MailMessage ^
-SmtpServer this.server.com ^
-To my@email.com ^
-From noreply@possibly.fake ^
-Subject Updated^
-Body "%%A File"
)
)
因此,我實際上是在進行一些繁瑣的糊塗工作的(甚至一次轉到了第3頁)
這是我的“檢查文件夾中的文件並使用新內容和舊內容發送電子郵件”
@echo off
setlocal enabledelayedexpansion
echo Files changed today %date%
FOR %%A IN (*.*) DO (
set tf=%%~tA
set fd=!tf:~0,10!
if !fd!==%date% (
set "file=!file! <br> %%A !tf!"
)
if NOT !fd!==%date% (
set "old=!old! <br> %%A !tf!"
)
)
set "file=!file!
set "old=!old!
set "today=<b>New today:</b> %file%"
set "older=<b>Older files</b> %old%"
set "body=!today! <br><br> !older!"
powershell -ExecutionPolicy ByPass -Command Send-MailMessage -BodyAsHtml^
-SmtpServer yourserver.com^
-To your@mail.com ^
-From noreply@possibly.fake ^
-Subject Updated^
-Body '!body!'
[Im]不帶批處理文件的純PowerShell解決方案,請將其保存到擴展.ps1
的文件中:
$modifiedToday = gci | ?{ $_.LastWriteTime.Date -eq (Get-Date).Date }
Send-MailMessage `
-SmtpServer this.server.com `
-To my@email.com `
-From noreply@possibly.fake `
-Subject Updated `
-Body ($modifiedToday -join "`n")
不純正,因為它使用了gci
和?{
類的縮寫別名,而不是Get-ChildItem和Where-Object,因為我真的不喜歡官方推薦的PowerShell代碼風格的冗長。 作為不介意編寫神秘的批處理文件代碼的人,OP也可能會對此表示贊賞。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.