2010-10-22 135 views
10

我已经编写了一个PowerShell脚本来创建电子邮件,但是我似乎无法附加文件。该文件确实存在,PowerShell可以打开它,任何人都可以告诉我我做错了什么?如何使用PowerShell将文件附加到电子邮件

$ol = New-Object -comObject Outlook.Application 
$message = $ol.CreateItem(0) 
$message.Recipients.Add("Deployment") 
$message.Subject = "Website deployment" 
$message.Body = "See attached file for the updates made to the website`r`n`r`nWarm Regards`r`nLuke" 

# Attach a file this doesn't work 
$file = "K:\Deploy-log.csv" 
$attachment = new-object System.Net.Mail.Attachment $file 
$message.Attachments.Add($attachment) 
+0

另外我使用PowerShell 2 – TheLukeMcCarthy 2010-10-22 13:54:27

回答

3

我上面通过移除线

$attachment = new-object System.Net.Mail.Attachment $file 

和不断变化的工作

$message.Attachments.Add($attachment) 

$message.Attachments.Add($file) 

虽然由@Keith山所提供的解决方案将是更好的,即使有很多护目镜我也无法使用它。

12

如果您在PowerShell 2.0中,只需使用内置的cmdlet的发送-MAILMESSAGE:

C:\PS>Send-MailMessage -from "User01 <[email protected]>" ` 
         -to "User02 <[email protected]>", ` 
          "User03 <[email protected]>" ` 
         -subject "Sending the Attachment" ` 
         -body "Forgot to send the attachment. Sending now." ` 
         -Attachment "data.csv" -smtpServer smtp.fabrikam.com 

如果你复制/粘贴此提防反引号之后添加额外的空间。 PowerShell不喜欢它。

+0

感谢的是,但在尝试使用该服务器时出现“无法连接到远程服务器”错误,并且服务器已启动。 – TheLukeMcCarthy 2010-10-25 09:34:08

+0

这可能是身份验证,防火墙等。请查看此线程获取更多帮助 - http://social.msdn.microsoft.com/Forums/en-US/netfxnetcom/thread/a75533eb-131b-4ff3-a3b2-b6df87c25cc8/ (朝底部)。 – 2010-10-26 03:19:48

+0

无论我做什么,我都无法获得上述工作。我收到跟随错误。 Send-MailMessage:无法连接到远程服务器 在行:1个字符:17 + Send-MailMessage <<<< - 来自“[email protected]”' + CategoryInfo:InvalidOperation :(System.Net。 Mail.SmtpClient:SmtpClient) [发送-MAILMESSAGE],SmtpException + FullyQualifiedErrorId:SmtpException,Microsoft.PowerShell.Commands.Send MAILMESSAGE 还有我试图从客户机,而不是在Exchange服务器上运行此。 – TheLukeMcCarthy 2010-10-29 09:36:39

0

您可以使用send-mailmessage或system.net.mail.MailMessage来完成它。有趣的是,这两种方法之间存在显着的执行时间差异。您可以使用measure-command来观察命令的执行时间。

0

这个工作我使用powershell-

定义变量:在脚本

$fromaddress = "[email protected]" 
$toaddress = "[email protected]" 
$Subject = "Test message" 
$body = "Please find attached - test" 
$attachment = "C:\temp\test.csv" 
$smtpserver = "mail.pd.com" 

使用变量:

$message = new-object System.Net.Mail.MailMessage 
$message.From = $fromaddress 
$message.To.Add($toaddress) 
$message.IsBodyHtml = $True 
$message.Subject = $Subject 
$attach = new-object Net.Mail.Attachment($attachment) 
$message.Attachments.Add($attach) 
$message.body = $body 
$smtp = new-object Net.Mail.SmtpClient($smtpserver) 
$smtp.Send($message) 
相关问题