Giter Club home page Giter Club logo

Comments (1)

Buenno avatar Buenno commented on August 29, 2024

Hi,

I was having the same issue but have identified the issue. This issue is caused by line 815 in Gmail.ps.psm1, this is part of the Save-Attachment function.

You need to change this line from "$paths = ($LiteralPath + $Path | Where { $_ })"
to "$paths = @($LiteralPath + $Path | Where { $_ })"

This forces the results to be stored as an array, without this, if the $paths variable only contains one value then it is treated as a string, then using "$destPath = $paths[$i]" as per line 818 will return single characters in position $i rather than the full path.

Line 818 originally shows as $destPath = $paths[$i], I imagine this variable is expected to contain more than one results, so you would select the results one at a time with $i and iterate through one after another.

I have pasted below my working version for you;

function Save-Attachment {
[CmdletBinding(DefaultParameterSetName = "Path")]
param (
[Parameter(Mandatory = $false, ValueFromPipeline = $true)]
[AE.Net.Mail.MailMessage]$Message,

    [Parameter(Position = 0, ParameterSetName = "Path", Mandatory = $true)]
    [string[]] $Path,

    [Parameter(ParameterSetName = "LiteralPath", Mandatory = $true)]
    [string[]] $LiteralPath,

    [Parameter(Mandatory = $false)]
    [switch] $PassThru
)

process {
    $paths = @($LiteralPath + $Path | Where { $_ })

    for ($i = 0; $i -lt $paths.Count; $i++) {
        $destPath = $paths[$i]

        if (!(Test-Path -Path $destPath -PathType Container)) {
            New-Item -Path $destPath -ItemType Container | Out-Null
        }

        $destPath = $destPath | Resolve-Path

        foreach ($a in $Message.Attachments) {
            $filename = ($Message.Uid + "_" + $a.Filename)
            $fileDest = Join-Path $destPath $filename

            if ($i -eq 0) {
                $a.Save($fileDest)
            } else {
                $fileLoc = Join-Path $paths $filename
                Copy-Item $fileLoc $fileDest
            }

            if ($PassThru) {
                Get-ItemProperty $fileDest
            }
        }
    }
}

I hope this helps.

Toby

from gmail.ps.

Related Issues (18)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.