Powershell:无法将附件添加到我的邮件中

时间:2019-09-03 15:20:00

标签: powershell outlook attachment

尝试在邮件中添加附件时出现异常:“值不在预期范围内。”

我可以发送不带附件的邮件,将附件添加到模板中,但是无法添加。我尝试了以下方法:

  1. $attach = new-object Net.Mail.Attachment($pathToAttachment) 
    $fMail.Attachments.Add($attach) 
    
  2. 我还尝试为Add方法提供路径数组而不是单个字符串。

  3. 还尝试将数组设置为$fMail.Attachments

这是我现在使用的代码

$fOutlook = New-Object -com Outlook.Application
$fMail =$fOutlook.Session.OpenSharedItem($pathToTemplate)
$fMail.SentOnBehalfOfName = $mailFrom
$fMail.To = $mailTo
$fMail.Subject = $mailSubject
$fMail.Attachments.Add($pathToAttachment)

谢谢您的时间。


更新

如果我尝试使用此逻辑

$myAttachments = $fMail.Attachments 
$myAttachments.Count    # <-- here I get 25
$myAttachments.Add($pathToAttachment) 

,但是上一行会导致“您不能在空值表达式上调用方法”。

如果我可以从附件中获取属性,为什么我的附件是“空值表达式”?

1 个答案:

答案 0 :(得分:0)

我在这里找到了答案 Return values of functions

我没有发布完整的代码,因为我认为这是多余的。但是问题出在隐藏部分。

function Add-Attachment{
param($fMail)
$attachments = $fMail.Attachments.Add($pathToAttachment) // the right version (1)
$fMail.Attachments.Add($pathToAttachment) // the wrong version (2)
return $fMail
}

function Send-Mail{
param($fMail)
$fMail.Send
}

   $Mail = Add-Attachment $Mail
   Send-Mail $Mail
如链接提供的信息中所示,

捕获并返回所有输出。因此,当我尝试调用

发送$ Mail

据我了解,$ Mail不再是Mail对象,而是元素的集合(附件集合,邮件)

所以我将附件集合存储为变量,现在它不是输出的一部分。