首页 > 解决方案 > 如何在PowerShell电子邮件中添加多个文件作为附件

问题描述

该代码用于发送带有一个文件附件的自动电子邮件。如何发送多个文件?

@ECHO OFF
SET GmailAccount=%~1
SET GmailPassword=%~2
SET Attachment=%~3
setlocal
set "date=%date%"
CALL :PowerShell
CD /D "%PowerShellDir%"
Powershell -ExecutionPolicy Bypass -Command "& '%PSScript%' 'examplemail@mail.com' 'PasswordofEmail' 'D:\Abc.xls'"

EXIT

:PowerShell
SET PowerShellDir=C:\Windows\System32\WindowsPowerShell\v1.0
SET PSScript=%temp%\~tmpSendeMail.ps1
IF EXIST "%PSScript%" DEL /Q /F "%PSScript%"

ECHO $Username      = $args[0]>> "%PSScript%"
ECHO $EmailPassword = $args[1]>> "%PSScript%"
ECHO $Attachment    = $args[2]>> "%PSScript%"
ECHO                          >> "%PSScript%"
ECHO $Username    = $Username                 >> "%PSScript%"
ECHO $EmailTo     = "Receiver@mail.com" >> "%PSScript%"
ECHO $EmailFrom   = "Sendermail@mail.com" >> "%PSScript%"
ECHO $Subject     = "Subject Name of the Email Text - %date%"           >> "%PSScript%"
ECHO $Body        = "Email body Text"              >> "%PSScript%"
ECHO $SMTPServer  = "smtp.gmail.com"          >> "%PSScript%"
ECHO $SMTPMessage = New-Object System.Net.Mail.MailMessage($EmailFrom, $EmailTo, $Subject, $Body) >> "%PSScript%"
ECHO $Attachment  = New-Object System.Net.Mail.Attachment($Attachment)                            >> "%PSScript%"
ECHO $SMTPMessage.Attachments.Add($Attachment)                                                    >> "%PSScript%"
ECHO $SMTPClient = New-Object Net.Mail.SmtpClient($SmtpServer, 587)                               >> "%PSScript%"
ECHO $SMTPClient.EnableSsl = $true                                                                >> "%PSScript%"
ECHO $SMTPClient.Credentials = New-Object System.Net.NetworkCredential($Username, $EmailPassword) >> "%PSScript%"
ECHO $SMTPClient.Send($SMTPMessage)                                                               >> "%PSScript%"
GOTO :EOF
PAUSE

标签: powershellemail

解决方案


.Attachments是一个集合,所以只需创建另一个附件对象,然后.Add()再次运行该方法以添加第二个附件对象,例如:

$Attachment2 = $args[3]
# ...
$Attachment2 = New-Object System.Net.Mail.Attachment($Attachment2)
# ...
$SMTPMessage.Attachments.Add($Attachment2)

顺便说一句,您可以Send-MailMessage为此使用 cmdlet。


推荐阅读