首页 > 解决方案 > 回复电子邮件 powershell

问题描述

您好 StackOverflow 的社区,我将询问方法“.reply()”。这是我正在尝试的代码:

function Unread ($correo) {
    if(($correo -eq $null) -or ($correo.Unread.ToString() -like "False")){
        $Noleido = $false
    }else{  
        $Noleido = $true
     return $Noleido
    }
}

    $body = "Bla bla bla"
    $firma = "I am here"
    #$cuerpo = "A test ps"
    $subject = "Re: automated reply"
    $Outlook = New-Object -comObject Outlook.Application 
    $OutlookFolders = $Outlook.Session.Folders.Item($buzon1).Folders
    #Map la bandeja de entrada.
    $bandeja_de_entrada=$OutlookFolders.Item("INBOX_FOLDER")

    #Creamos el objeto que hace referencia a la bandeja de entrada y los mensajes que contiene.
    $all_mail=$bandeja_de_entrada.Items


foreach ($mail in $all_mail){ 
    $flag1 = Unread($mail)
    if($flag1 -eq $true){     
       #$mail.to = ""         
       $mail.body =" $cuerpo" +"$firma"
       $mail.subject = $subject
       $mail.reply()
   }
}

不要发送电子邮件。

它在答案中解决

标签: powershellemailoutlookautomationreply

解决方案


该方法reply基于原始邮件创建预填充了必要属性的 MailItem。

如果将该reply方法创建的 MailItem 保存到变量中,则可以使用该方法send实际发送回复。

将您的脚本修改为如下所示可能会起作用。

$body = "Bla bla bla"
    $firma = "I am here"
    $subject = "A test ps"
    $Outlook = New-Object -comObject Outlook.Application 
    $OutlookFolders = $Outlook.Session.Folders.Item($buzon1).Folders
    #Map la bandeja de entrada.
    $bandeja_de_entrada=$OutlookFolders.Item("INBOX_FOLDER")

    #Creamos el objeto que hace referencia a la bandeja de entrada y los mensajes que contiene.
    $all_mail=$bandeja_de_entrada.Items

    foreach ($mail in $all_mail){      
       #$mail.to = ""
       $reply = $mail.reply()
       $reply.body = " $cuerpo $firma"
       $reply.subject = $subject
       $reply.send()
    }

如果您想包含原始消息而不是覆盖它,您可以将$reply.body-line 更改为这样的内容;

$reply.body = $reply.body + " $cuerpo $firma"

推荐阅读