-
Notifications
You must be signed in to change notification settings - Fork 102
Expand file tree
/
Copy pathUnsubscribe-Emails.ps1
More file actions
49 lines (44 loc) · 2.47 KB
/
Unsubscribe-Emails.ps1
File metadata and controls
49 lines (44 loc) · 2.47 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
function Invoke-UnsubscribeEmail {
[CmdletBinding()]
param (
[Parameter(Position = 1, Mandatory = $true)]
[String]
$MailboxName,
[Parameter(Position = 2, Mandatory = $false)]
[switch]
$UnSubscribe
)
Begin {
$UnSubribeHash = @{}
Import-Module .\Microsoft.IdentityModel.Clients.ActiveDirectory.dll -Force
$PromptBehavior = New-Object Microsoft.IdentityModel.Clients.ActiveDirectory.PlatformParameters -ArgumentList Auto
$Context = New-Object Microsoft.IdentityModel.Clients.ActiveDirectory.AuthenticationContext("https://login.microsoftonline.com/common")
$token = ($Context.AcquireTokenAsync("https://graph.microsoft.com", "d3590ed6-52b3-4102-aeff-aad2292ab01c", "urn:ietf:wg:oauth:2.0:oob", $PromptBehavior)).Result
$Header = @{
'Content-Type' = 'application\json'
'Authorization' = $token.CreateAuthorizationHeader()
}
$Result = Invoke-RestMethod -Headers $Header -Uri ("https://graph.microsoft.com/beta/users('" + $MailboxName + "')/MailFolders/Inbox/Messages?`$Top=1000&`$select=ReceivedDateTime,Sender,Subject,IsRead,inferenceClassification,InternetMessageId,parentFolderId,hasAttachments,webLink,unsubscribeEnabled,unsubscribeData") -Method Get
if ($Result.value -ne $null) {
foreach ( $Message in $Result.value ) {
if($Message.unsubscribeEnabled){
foreach($Entry in $Message.unsubscribeData){
if($Entry.contains("mailto:")){
if(!$UnSubribeHash.ContainsKey($Entry))
{
$UnSubribeHash.Add($Entry,"")
if($UnSubscribe.IsPresent){
$UnsubsribeResult = Invoke-RestMethod -Headers $Header -Uri ("https://graph.microsoft.com/beta/users('" + $MailboxName + "')/MailFolders/Inbox/Messages('" + $Message.id + "')/unsubscribe") -Method Post -ContentType "application/json"
write-host ("Unsubscribe : " + $Message.Subject)
$UnsubsribeResult
}else{
write-host ("ReportOnly - Unsubscribe : " + $Message.Subject)
}
}
}
}
}
}
}
}
}