Quantcast
Channel: Exchange Server Development forum
Viewing all articles
Browse latest Browse all 7132

EWS: Some attachments from e-mail save as "System.Object[]" instead of real filename

$
0
0

Hello,

I use the script that saves attachments from messages from Exchange mailbox.

Some attachments save as "System.Object[]" instead of real filename and at the end of the such file I see a garbage...

Thank you for any help!

The script:

param($mailboxName = "***",
      $smtpServerName = "****",
      $emailFrom = "****",
      $emailTo = "*****"
      )
cls




Add-Type -Path "C:\Program Files\Microsoft\Exchange\Web Services\2.2\Microsoft.Exchange.WebServices.dll"
try {
  $Exchange2007SP1 = [Microsoft.Exchange.WebServices.Data.ExchangeVersion]::Exchange2007_SP1
  $Exchange2010    = [Microsoft.Exchange.WebServices.Data.ExchangeVersion]::Exchange2010
  $Exchange2010SP1 = [Microsoft.Exchange.WebServices.Data.ExchangeVersion]::Exchange2010_SP1
  $Exchange2010SP2 = [Microsoft.Exchange.WebServices.Data.ExchangeVersion]::Exchange2010_SP2
  $Exchange2013    = [Microsoft.Exchange.WebServices.Data.ExchangeVersion]::Exchange2013
  $Exchange2013SP1 = [Microsoft.Exchange.WebServices.Data.ExchangeVersion]::Exchange2013_SP1
  # create EWS Service object for the target mailbox name

 $exchangeService = New-Object -TypeName Microsoft.Exchange.WebServices.Data.ExchangeService -ArgumentList $Exchange2010
  
  
  $exchangeService.UseDefaultCredentials = $true
  
  #Provide the credentials



$exchangeservice.AutodiscoverUrl("***",{$true})  #$exchangeService.AutodiscoverUrl($mailboxName,{$true})




$inboxfoldername = new-object Microsoft.Exchange.WebServices.Data.FolderId([Microsoft.Exchange.WebServices.Data.WellKnownFolderName]::Inbox,$MailboxName) 
$InboxFolder = [Microsoft.Exchange.WebServices.Data.Folder]::Bind($exchangeservice,$inboxfoldername)



$itemView = New-Object -TypeName Microsoft.Exchange.WebServices.Data.ItemView  -ArgumentList 100
 
 

  $dateTimeItem = [Microsoft.Exchange.WebServices.Data.ItemSchema]::DateTimeReceived
  $15MinutesAgo = (Get-Date).AddDays(0)
  $searchFilter = New-Object -TypeName Microsoft.Exchange.WebServices.Data.SearchFilter+IsLessThanOrEqualTo -ArgumentList $dateTimeItem,$15MinutesAgo

  $foundItems = $exchangeService.FindItems($inboxFolder.Id,$searchFilter,$itemView)
 
}
catch
{
$_.Exception.Message+$_.InvocationInfo.PositionMessage | out-file 'c:\temp\maillog.txt' -append

  }


$founditems | ForEach {$_.Load()}



$FolderView = new-object Microsoft.Exchange.WebServices.Data.FolderView(100)
$FolderView.Traversal = [Microsoft.Exchange.Webservices.Data.FolderTraversal]::Deep
$SearchFilter = new-object Microsoft.Exchange.WebServices.Data.SearchFilter+IsEqualTo([Microsoft.Exchange.WebServices.Data.FolderSchema]::DisplayName,"AS")
$FindFolderResults = $exchangeservice.FindFolders([Microsoft.Exchange.WebServices.Data.WellKnownFolderName]::MsgFolderRoot,$SearchFilter,$FolderView)
if($FindFolderResults.Id)
 {
$FolderId = $FindFolderResults.Id
}
else
{  "Folder not found!" | out-file 'c:\temp\maillog.txt' -append
   #  exit
}
#-------------------read attachments from messages-----------------------------------------------------------------
$i=0
$founditems | %{ 
if ($_.subject -like  '*****') {
                                           $i++
                                           $_.load()

                                           $attach=$_.Attachments                                                                                     
                                           
                                                         
                                         if ($attach.count -ge 1){ 
                                                                                                               
                                                                     
                                                                                                               $attach.load()                                                                                      
                                                                                                               
                                                                                                                                    #-------- download attachments to folder------------------------------------------------------------------------------------     
                                                                                                              $fiFile = new-object System.IO.FileStream((“c:\temp\attachments\” + $attach.Name.ToString()), [System.IO.FileMode]::Create)                                           
                                                                                                               $fiFile.Write($attach.Content, 0, $attach.Content.Length)
                                                                                                                $fiFile.Close()

                                                                                                               
                                                                                                                 $_.delete('MovetoDeletedItems')                                             }
                                                                 else{
                                                                      "attachments not found..." |  out-file 'c:\temp\maillog.txt' -append 
                                                                      }

                                         }
                      }  



Viewing all articles
Browse latest Browse all 7132

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>