簡體   English   中英

來自具有可變主體的命令的Send-Mailmessage

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM