2015-11-03 83 views
-1

我的powershell腳本目前處理髮送電子郵件從命令行到用戶列表。我想添加一個附件到電子郵件和一個Cc列表,所以所有的電子郵件都不通過「收件人」電子郵件參數。這是我目前的功能。添加附件和抄送參數smtp電子郵件功能

function SendEmail 
{ 
$smtpServer = "smtp.server" 
$smtpFrom = "PROD <[email protected]>" 
$smtpTo = "[email protected]" 
$messageSubject = "Weekly List "+$day 
$messagebody = "Hi User, Please find attached document. Thank you." 

$smtp = New-Object Net.Mail.SmtpClient($smtpServer) 
$smtp.Send($smtpFrom,$smtpTo,$messageSubject,$messagebody) 
} 

我的嘗試是增加一個變量,名爲$連接=「\ PathtoFile」 並添加附件$進入發送功能,但沒有工作...

+0

你不使用'發送-MailMessage' cmdlet的任何特別的原因? –

+0

我在向主題添加日期變量時遇到了問題,並且在使用Send-mailmessage cmdlet時,還遇到了諸如「'」的電子郵件正文中的特殊字符。 – rafacardosoc

回答

1

使用Send-MailMessageAttachmentsCc參數:

Send-MailMessage -Attachments "C:\path\to\attachment.ext" -Cc "[email protected]" 

你也可以指定編碼(你提到的特殊字符):

Send-MailMessage -Encoding UTF8 

在一般情況下,我會建議splatting的參數,所以它最終看起來像這樣:

$MyAttachments = ".\a\relative\path.ext","C:\another\file.ext" 

$MailParams = @{ 
    SmtpServer = "smtp.server" 
    From = "PROD <[email protected]>" 
    To = "[email protected]" 
    Subject = "Weekly List "+$day 
    Body = "Hi User, Please find attached document. Thank you." 
    Attachments = $MyAttachments 
    Encoding = [System.Text.Encoding]::UTF8 
} 

Send-MailMessage @MailParams 
+0

謝謝Mathias。這很好用!最後一個問題,Cc參數是否不需要多封電子郵件?我添加了兩個用逗號分隔的電子郵件,它只通過電子郵件發送第二個用戶。 – rafacardosoc

+0

'Cc'接受多個地址,確定您拼寫正確的電子郵件地址? –