我正在使用我创建的powershell脚本,当时在文件夹中收到文件时,我创建了为用户发送电子邮件。我遇到的问题是正在观看的一些文件夹路径在路径中有一个空间,打破了发送电子邮件主体中的超链接。我如何包含空间,以免打破超链接。
我用它来获取路径名:
$(split-path $Event.SourceEventArgs.FullPath)
添加到我使用的电子邮件正文中的代码如下:
$global:newFiles.Add("`n[$(Get-Date -Format HH:mm:ss)]`tNew file named $($Event.SourceEventArgs.Name) arrived in $(split-path $Event.SourceEventArgs.FullPath) and was copied to $($dPath)$((Get-Date).ToString('yyyy'))$((Get-Date).ToString('MMM yyyy'))$((Get-Date).AddDays(1 + $(1,2 -eq 7 - [int]$formatteddate.dayofweek) ).ToString('MMM d yyyy'))")
这是发送电子邮件的方式:
while ($watcher.EnableRaisingEvents -or $global:newFiles.Count -gt 0) {
#Sleep
Start-Sleep -Seconds 60
if($global:newFiles.Count -gt 0) {
#Convert list of strings to single string (multiline)
$smtpbody = $global:newFiles
$smtp.Send($smtpFrom, $smtpTo, $smtpSubject, $smtpBody)
#Mail sent, Empty array
$global:newFiles.Clear()
}
}
正如TheCorrigible1提到的那样,您缺少HTML标签来告诉Outlook这是一个超链接:
$Body = "<a href='\vavmFTPK NWIncoming'>\vavmFTPK NWIncoming</a>"
Send-MailMessage -To $MailTo -SmtpServer $MailServer -From $MailFrom -Body $MailBody -BodyAsHtml -Subject $MailSubject
我能够通过在路径名周围添加一个开放式的人字形来简单地修复此问题。<$(split-path $Event.SourceEventArgs.FullPath)>
下面的全行代码:
$global:newFiles.Add("`n[$(Get-Date -Format HH:mm:ss)]`tNew file named $($Event.SourceEventArgs.Name) arrived in <$(split-path $Event.SourceEventArgs.FullPath)> and was copied to $($dPath)$((Get-Date).ToString('yyyy'))$((Get-Date).ToString('MMM yyyy'))$((Get-Date).AddDays(1 + $(1,2 -eq 7 - [int]$formatteddate.dayofweek) ).ToString('MMM d yyyy'))")