尝试在邮件中添加附件时出现异常:“值不在预期范围内。”
我可以发送不带附件的邮件,将附件添加到模板中,但是无法添加。我尝试了以下方法:
$attach = new-object Net.Mail.Attachment($pathToAttachment)
$fMail.Attachments.Add($attach)
我还尝试为Add
方法提供路径数组而不是单个字符串。
还尝试将数组设置为$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)
,但是上一行会导致“您不能在空值表达式上调用方法”。
如果我可以从附件中获取属性,为什么我的附件是“空值表达式”?
答案 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对象,而是元素的集合(附件集合,邮件)
所以我将附件集合存储为变量,现在它不是输出的一部分。