Private/Get-IgugaMailerSetting.ps1

function Get-IgugaMailerSetting {
    [OutputType([IgugaMailerSetting])]
    [CmdletBinding()]
    param(
        [Parameter(Mandatory = $true, Position = 0)]
        [string]
        $SettingsFilePath
    )

    if (-not(Test-Path -LiteralPath $SettingsFilePath -PathType Leaf)) {
        throw [IgugaError]::PathNotFound($Script:LocalizedData.ErrorSettingsFileNotFound, $Path)
    }

    $Settings = [IgugaMailerSetting]::new()

    $Username = Get-IgugaSetting -Path $SettingsFilePath -Key "IgugaMailerUsername"
    $Password = Get-IgugaSetting -Path $SettingsFilePath -Key "IgugaMailerPassword" -ReturnSecureString

    $Settings.SMTPServer = Get-IgugaSetting -Path $SettingsFilePath -Key "IgugaMailerSMTPServer"
    $Settings.Port = Get-IgugaSetting -Path $SettingsFilePath -Key "IgugaMailerPort"
    $Settings.Encryption = Get-IgugaSetting -Path $SettingsFilePath -Key "IgugaMailerEncryption"

    if ($Username) {
        $Settings.Credential = (New-Object -TypeName PSCredential -ArgumentList $Username, $Password)
    }

    if ([string]::IsNullOrWhiteSpace($Settings.SMTPServer)) {
        throw [IgugaError]::InvalidSetting($Script:LocalizedData.ErrorInvalidSetting, "IgugaMailerSMTPServer")
    }

    return $Settings
}