Reading Items on Outlook Shared Tasks with Powershell? - powershell

i got a question about Shared-Tasks in Outlook.
The Shared-Tasks List is from a Microsoft Exchange Server.
$Outlook = New-Object -ComObject Outlook.Application
$OutlookTasks = $Outlook.session.GetDefaultFolder(13)
$OutlookTasks = $Outlook.session.GetDefaultFolder(13).Items
$OutlookTasks | ft Subject, Body
This shows me only my own Task in Powershell.
Subject Body
------- ----
Test Task
But i want to access a Shared-Tasks List, which is listed below from "My Tasks".
It looks like this:
Outlook View
Is there a command to go deeper into my Tasks ?

Related

Issue related to Powershell send-mail

I am using powershell send-mail command to send mail. It is working fine. But I cant see the mail which I sent in "sent items". I can see it if I sent mail manually, but I am not able to understand why it is not visible if i sent a mail using send-mail command.
Thanks
I have a function which creates an Outlook "Draft". I do it this way so that the e-mail can be reviewed before hitting "Send". This may not work for you; perhaps you'd want to add a send command at the end. But what you describe wanting to do is probably going to need outlook available on the system which is executing the commands.
It will check to see if you have a mail profile set up first, but otherwise it's not super-robust.
Function Compose-Email {
Param ([String]$recipients, [string]$subject, [string]$body)
$reg="HKCU:\Software\Microsoft\Office\16.0\Outlook\Profiles"
$child=(Get-ChildItem -Path $reg).name
if (!((Get-ChildItem -Path $reg).name)) {
Write-Error "No Mail Profile found! Cannot compose Draft."
}
else {
$olFolderDrafts = 16
$ol = New-Object -comObject Outlook.Application
$ns = $ol.GetNameSpace("MAPI")
# call the save method to save the email in the drafts folder
$mail = $ol.CreateItem(0)
$Mail.Recipients.Add($recipients)
$Mail.Subject = $subject
$Mail.Body = $body
$Mail.save()
$mail.display()
}
}

Can't get senders email address from read receipts

I am using the code posted on here to try and retrieve the senders email address form read receipts in PowerShell. For some emails this works OK but for others it does not work.
In Outlook I can clearly see who it's from, but PowerShell returns a blank cell.
Any help please?
function Get-OutlookInBox {
Add-Type -AssemblyName "Microsoft.Office.Interop.Outlook" | Out-Null
$olFolders = "Microsoft.Office.Interop.Outlook.olDefaultFolders" -as [type]
$Outlook = New-Object -ComObject Outlook.Application
$Namespace = $Outlook.GetNameSpace("MAPI")
$folder = $NameSpace.pickfolder()
$Folder.Items | Get-Member
$Folder.Items |
Select-Object Subject, SenderName, SenderEmailAddress, CreationTime,
ReceivedTime, Final-recipient, UserProperties, ItemProperties,
MAPIOBJECT, ReceivedByName, Recipents, Sender, SentOn,
SentOnBehalfOfName |
Export-CSV -NoTypeInformation xxx\Trial.csv
}
First of all, make sure that specified exist and can't be retrieved for a particular object. For example, I have noticed the Final-recipient which doesn't have any corresponding property in the OOM.
Note, you need to iterate over all items in the folder and deal with mail items only because other Outlook items may not have properties specified to export. So, you may check the Class property before doing anything.
A yet better solution is to use the Find/FindNext or Restrict methods of the Items class to get items that correspond to your conditions. Read more about these methods in the following articles:
How To: Use Find and FindNext methods to retrieve Outlook mail items from a folder (C#, VB.NET)
How To: Use Restrict method to retrieve Outlook mail items from a folder

Reading MSG file from outlook via powershell .. how to get email address?

Fairly simple script at the moment I simply need to get the recipients email address out of a msg file, apparently there's not an easy way to parse it in text so I've used the following code, but I only get a name such as 'Joe Smith' when reading the message not joe.smith#mydomain.com
Any ideas?
Thanks!
$outlook = New-Object -comobject outlook.application
$msg = $outlook.CreateItemFromTemplate("c:\MyMessage.msg")
$msg | Select to
You need to access the Recipients collection and read the Recipient.Address property for the items in that collection. You also might want to use Application.Session.OpenSharedItem instead of CreateItemFromTemplate.

Open outlook's new email dialog with prefilled information from powershell

I'm trying to write a powershell script (which will run periodicaly) for opening the new email windows of outlook with "to", "subject" and "body" filled with some data.
I found a way to send mails from powershell but you have to send it from powershell. this doesn't fit the need because I have to edit the body of the mail.
$Outlook = New-Object -ComObject Outlook.Application
$Mail = $Outlook.CreateItem(0)
$Mail.To = "random.dude#email.com"
$Mail.Subject = "data for Subject"
$Mail.Body ="Example of body..."
$Mail.Send()
Basicaly what i need is a $Mail.Show() wich will open a new e-mail popup with the data pre-filled
powershell is not a requirement, it just seams able to manipulate outlook so I tried with it.
thanks to this thread, the $Mail.Show() is actually $Mail.Display()
I know this is a little late however if you add the following to your script removing your $Mail.Send() line it should open the email ready for editing:
$mail.save()
$inspector = $mail.GetInspector
$inspector.Display()

Powershell create outlook mail with custom voting option

I have been trying to find answers with no luck if this is possible.
Is there a way to create an outlook email with custom voting options through powershell?
My goal is to have an automated script that sends email based on a criteria and have it sent with a custom voting options so that people can respond through a voting mechanism.
Here is one way to do it by using the Outlook COM Object model.
#Open Outlook
$outlook = New-Object -ComObject Outlook.Application
#Create new Mail Message
$mail = $outlook.CreateItem(0)
$mail.To = 'user#someplace.com'
$mail.Subject = 'Test Voting'
$mail.Body = 'Test Voting Message'
#Add Voting options
$mail.VotingOptions = "Yes;No;Maybe"
#Send Message
$mail.Send()
#Exit Outlook
$outlook.Quit()