internal/functions/client/Show-ClientMessage.ps1

function Show-ClientMessage
{
    [CmdletBinding()]
    Param (
        $MessageID
    )
    
    $MessageID = $mbtable.DefaultView[$dgDataGrid.CurrentCell.RowIndex][4]
    $script:msMessage = Get-EXREmail -MailboxName $emEmailAddressTextBox.Text -ItemRESTURI $MessageID -AccessToken $Script:AccessToken
    write-host $MessageID
    $msgform = new-object System.Windows.Forms.form
    $msgform.Text = $script:msMessage.Subject
    $msgform.size = new-object System.Drawing.Size(1000, 800)
    
    
    # Add Message From Lable
    $miMessageTolableBox = new-object System.Windows.Forms.Label
    $miMessageTolableBox.Location = new-object System.Drawing.Size(20, 20)
    $miMessageTolableBox.size = new-object System.Drawing.Size(80, 20)
    $miMessageTolableBox.Text = "To"
    $msgform.controls.Add($miMessageTolableBox)
    
    # Add MessageID Lable
    $miMessageSentlableBox = new-object System.Windows.Forms.Label
    $miMessageSentlableBox.Location = new-object System.Drawing.Size(20, 40)
    $miMessageSentlableBox.size = new-object System.Drawing.Size(80, 20)
    $miMessageSentlableBox.Text = "From"
    $msgform.controls.Add($miMessageSentlableBox)
    
    # Add Message Subject Lable
    $miMessageSubjectlableBox = new-object System.Windows.Forms.Label
    $miMessageSubjectlableBox.Location = new-object System.Drawing.Size(20, 60)
    $miMessageSubjectlableBox.size = new-object System.Drawing.Size(80, 20)
    $miMessageSubjectlableBox.Text = "Subject"
    $msgform.controls.Add($miMessageSubjectlableBox)
    
    # Add Message To
    $miMessageTotextlabelBox = new-object System.Windows.Forms.Label
    $miMessageTotextlabelBox.Location = new-object System.Drawing.Size(100, 20)
    $miMessageTotextlabelBox.size = new-object System.Drawing.Size(400, 20)
    $msgform.controls.Add($miMessageTotextlabelBox)
    $ToRecips = "";
    foreach ($torcp in $msMessage.toRecipients)
    {
        $ToRecips += $torcp.emailAddress.address.ToString() + ";"
    }
    $miMessageTotextlabelBox.Text = $ToRecips
    
    # Add Message From
    $miMessageSenttextlabelBox = new-object System.Windows.Forms.Label
    $miMessageSenttextlabelBox.Location = new-object System.Drawing.Size(100, 40)
    $miMessageSenttextlabelBox.size = new-object System.Drawing.Size(600, 20)
    $msgform.controls.Add($miMessageSenttextlabelBox)
    $miMessageSenttextlabelBox.Text = $msMessage.sender.emailAddress.name.ToString() + " (" + $msMessage.sender.emailAddress.address.ToString() + ")"
    
    # Add Message Subject
    $miMessageSubjecttextlabelBox = new-object System.Windows.Forms.Label
    $miMessageSubjecttextlabelBox.Location = new-object System.Drawing.Size(100, 60)
    $miMessageSubjecttextlabelBox.size = new-object System.Drawing.Size(600, 20)
    $msgform.controls.Add($miMessageSubjecttextlabelBox)
    $miMessageSubjecttextlabelBox.Text = $msMessage.Subject.ToString()
    
    # Add Message body
    $miMessageBodytextlabelBox = new-object System.Windows.Forms.WebBrowser
    $miMessageBodytextlabelBox.Location = new-object System.Drawing.Size(100, 80)
    $miMessageBodytextlabelBox.size = new-object System.Drawing.Size(900, 550)
    $miMessageBodytextlabelBox.AutoSize = $true
    $miMessageBodytextlabelBox.DocumentText = $msMessage.Body.Content
    $msgform.controls.Add($miMessageBodytextlabelBox)
    
    # Add Message Attachments Lable
    $miMessageAttachmentslableBox = new-object System.Windows.Forms.Label
    $miMessageAttachmentslableBox.Location = new-object System.Drawing.Size(20, 645)
    $miMessageAttachmentslableBox.size = new-object System.Drawing.Size(80, 20)
    $miMessageAttachmentslableBox.Text = "Attachments"
    $msgform.controls.Add($miMessageAttachmentslableBox)
    
    $miMessageAttachmentslableBox1 = new-object System.Windows.Forms.Label
    $miMessageAttachmentslableBox1.Location = new-object System.Drawing.Size(100, 645)
    $miMessageAttachmentslableBox1.size = new-object System.Drawing.Size(600, 20)
    $miMessageAttachmentslableBox1.Text = ""
    $msgform.Controls.Add($miMessageAttachmentslableBox1)
    
    
    $exButton4 = new-object System.Windows.Forms.Button
    $exButton4.Location = new-object System.Drawing.Size(10, 665)
    $exButton4.Size = new-object System.Drawing.Size(150, 20)
    $exButton4.Text = "Download Attachments"
    $exButton4.Enabled = $false
    $exButton4.Add_Click({ Save-ClientAttachment })
    $msgform.Controls.Add($exButton4)
    
    $attname = ""
    if ($script:msMessage.hasattachments)
    {
        write-host "Attachment"
        $exButton4.Enabled = $true
        $Attachments = Get-EXRAttachments -MailboxName $emEmailAddressTextBox.Text -AccessToken $Script:AccessToken -ItemURI $MessageID -MetaData
        foreach ($attach in $Attachments)
        {
            $attname = $attname + $attach.Name.ToString() + "; "
        }
    }
    $miMessageAttachmentslableBox1.Text = $attname
    # Add Download Button
    
    $msgform.autoscroll = $true
    $msgform.Add_Shown({ $Script:form.Activate() })
    $msgform.ShowDialog()    
}