Search code examples
powershelloutlookms-wordoffice-automation

Embed .docx\xlsx in Outlook via Powershell


could you please tell me how to do this?

I tried a bunch of different options, but all I could get was System.__ComObject and the xml in it

$Outlook = New-Object -ComObject Outlook.Application
$Mail = $Outlook.CreateItem(0)
$Mail.To = "e@mail.com"
$Mail.Subject = "Subject"

$Word = New-Object -ComObject Word.Application
$Doc = $Word.Documents.Open("C:\1.docx")

$Mail.HTMLBody = 

$Doc.Close($true)
$Word.Quit($true)

$inspector = $Mail.Getinspector
$inspector.Display()

$Word = New-Object -ComObject Word.Application

$Doc = $Word.Documents.Open("C:\1.docx")
$Doc.Content.Copy()

$Doc.Close($true)
$Word.Quit($true)

$Outlook = New-Object -ComObject Outlook.Application
$Mail = $Outlook.CreateItem(0)
$Mail.To = "random@email.com"
$Mail.Subject = "Subject"

$Mail.HTMLBody = $Mail.GetInspector().WordEditor.Content.Paste()

$Mail.GetInspector().Display()

Solution

  • $Word = New-Object -ComObject Word.Application
    $Doc = $Word.Documents.Open("C:\1.docx")
    $Doc.Content.Copy()
    
    $Outlook = New-Object -ComObject Outlook.Application
    $Mail = $Outlook.CreateItem(0)
    $Mail.To = "random@email.com"
    $Mail.Subject = "Subject"
    
    echo $Mail.HTMLBody = $Mail.GetInspector().WordEditor.Content.Paste()
    
    $Mail.GetInspector().Display()
    
    $Doc.Close($true)
    $Word.Quit($true)
    

    it worked, but I don't understand why it doesn't work without echo

    $Word = New-Object -ComObject Word.Application
    $Doc = $Word.Documents.Open("C:\1.docx")
    $Doc.Content.Copy()
    
    $Outlook = New-Object -ComObject Outlook.Application
    $Mail = $Outlook.CreateItem(0)
    $Mail.To = "random@email.com"
    $Mail.Subject = "Subject"
    
    $Mail.GetInspector().WordEditor.Content.Paste()
    
    $Mail.GetInspector().Display()
    
    $Doc.Close($true)
    $Word.Quit($true)