private/helpers/Test-EmailAddress.ps1

function Test-EmailAddress
{
    <#
    .SYNOPSIS
        Test if input is a valid email address.
    .DESCRIPTION
        Uses .NET method to test if input is a valid email address.
        Returns true if input is a valid, otherwise false.
    .PARAMETER InputObject
        Email such as "abc@contoso.com" (without quotes).
    .EXAMPLE
        Test-EmailAddress -InputObject "0ee5b3dc-f9ce-4414-b93b-aea03ef7e108"
    #>

    [cmdletbinding()]
    [OutputType([bool])]
    param
    (
        # Backup path.
        [Parameter(Mandatory = $true, Position = 0, ValueFromPipelineByPropertyName = $true)]
        [ValidateNotNullOrEmpty()]
        [string]$InputObject
    )

    BEGIN
    {
        # Write to log.
        $customProgress = Write-CustomProgress -Activity $MyInvocation.MyCommand.Name -CurrentOperation 'Test e-mail address';

        # Is valid.
        [bool]$isValid = $false;
    }
    PROCESS
    {
        # Try to parse input as email address.
        try
        {
            # Test if input is a valid email address.
            [void][System.Net.Mail.MailAddress]::new($InputObject);

            # If input is a valid email address.
            $isValid = $true;

            # Write to log.
            Write-CustomLog -Message ("Input '{0}' is a valid e-mail address" -f $InputObject) -Level 'Verbose';
        }
        catch
        {
            # Write to log.
            Write-CustomLog -Message ("Input '{0}' is not a valid e-mail address" -f $InputObject) -Level 'Verbose';
        }
    }
    END
    {
        # Write to log.
        Write-CustomProgress @customProgress;

        # Return result.
        return $isValid;
    }
}