如何使用PowerShell将文件附加到电子邮件
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用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)
答案
如果您使用的是PowerShell 2.0,只需使用内置的cmdlet Send-MailMessage:
C:PS>Send-MailMessage -from "User01 <user01@example.com>" `
-to "User02 <user02@example.com>", `
"User03 <user03@example.com>" `
-subject "Sending the Attachment" `
-body "Forgot to send the attachment. Sending now." `
-Attachment "data.csv" -smtpServer smtp.fabrikam.com
如果您复制/粘贴此手表以获取反引号后添加的额外空间。 PowerShell不喜欢它。
另一答案
我通过删除线来完成上述工作
$attachment = new-object System.Net.Mail.Attachment $file
和改变
$message.Attachments.Add($attachment)
至
$message.Attachments.Add($file)
虽然@Keith Hill提供的解决方案会更好,但即使有很多镜头,我也无法让它发挥作用。
另一答案
这对我使用powershell-
定义变量:
$fromaddress = "donotreply@pd.com"
$toaddress = "test@pd.com"
$Subject = "Test message"
$body = "Please find attached - test"
$attachment = "C: emp est.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)
另一答案
您可以使用send-mailmessage或system.net.mail.MailMessage来完成它。有趣的是,这两种方法之间存在显着的执行时间差异。您可以使用measure-command来观察命令的执行时间。
以上是关于如何使用PowerShell将文件附加到电子邮件的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 PHPMailer 从 PC 将文件附加到电子邮件
如何使用 Mandrill 将 csv 文件附加到电子邮件?
如何使用PHPMailer将多个文件附加到两个不同的电子邮件中?