zoukankan      html  css  js  c++  java
  • 使用EWS API读取邮件

    #安装EwsManagedApi.msi,然后导入EWS模块
    Import-Module -Name "C:Program FilesMicrosoftExchangeWeb Services2.0Microsoft.Exchange.WebServices.dll"
    #$exchService.UseDefaultCredentials = $true 使用本地默认凭据
    #使用其他凭据
    $Credentials = New-Object Microsoft.Exchange.WebServices.Data.WebCredentials("username","password","uuuu")
    $exchService = New-Object Microsoft.Exchange.WebServices.Data.ExchangeService
    $exchService.Credentials = $Credentials
    $exchService.AutodiscoverUrl("username@x.com") #登录Exchange
    $exchService
    #绑定收件箱(Inbox)
    $inbox = [Microsoft.Exchange.WebServices.Data.Folder]::Bind($exchService,[Microsoft.Exchange.WebServices.Data.WellKnownFolderName]::Inbox)
    $inbox|gm
    
    $ms = $inbox.FindItems(10) #查询邮件数量
    foreach ($m in $ms)
    {
    $m.Load()
    $m.subject
    $m.IsRead
    }

    读取未读邮件:

    #使用其他凭据
    $Credentials = New-Object Microsoft.Exchange.WebServices.Data.WebCredentials("ly","l","u")
    $exchService = New-Object Microsoft.Exchange.WebServices.Data.ExchangeService
    $exchService.Credentials = $Credentials
    $exchService.AutodiscoverUrl("ly@x.com") #登录Exchange
    $exchService
    #绑定收件箱(Inbox)
    $inbox = [Microsoft.Exchange.WebServices.Data.Folder]::Bind($exchService,[Microsoft.Exchange.WebServices.Data.WellKnownFolderName]::Inbox)
    $view = New-Object Microsoft.Exchange.WebServices.Data.ItemView(100) #The view that controls the number of items that are returned.
    #读取未读邮件
    $searchFilter =  new-object Microsoft.Exchange.WebServices.Data.SearchFilter+IsEqualTo([Microsoft.Exchange.WebServices.Data.EmailMessageSchema]::IsRead, $false)
    $findResults = $exchService.FindItems([Microsoft.Exchange.WebServices.Data.WellKnownFolderName]::Inbox,$searchFilter,$view)
    $findResults.TotalCount

    遍历Inbox下所有文件夹:

    Import-Module -Name "C:Program FilesMicrosoftExchangeWeb Services2.0Microsoft.Exchange.WebServices.dll"
    #$exchService.UseDefaultCredentials = $true 使用本地默认凭据
    #使用其他凭据
    $Credentials = New-Object Microsoft.Exchange.WebServices.Data.WebCredentials("ly","l","ux")
    $exchService = New-Object Microsoft.Exchange.WebServices.Data.ExchangeService
    $exchService.Credentials = $Credentials
    $exchService.AutodiscoverUrl("ly@x.com") #登录Exchange
    $exchService
    #绑定收件箱(Inbox)
    $inbox = [Microsoft.Exchange.WebServices.Data.Folder]::Bind($exchService,[Microsoft.Exchange.WebServices.Data.WellKnownFolderName]::Inbox)  #MsgFolderRoot根目录
    #查询Inbox下的所有文件夹
    $FolderList = new-object Microsoft.Exchange.WebServices.Data.FolderView(100)
    $FolderList.Traversal = [Microsoft.Exchange.WebServices.Data.FolderTraversal]::Deep
    $findFolderResults = $inbox.FindFolders($FolderList)

    遍历某个子文件夹(手机邮箱配置)下面的邮件:

    #安装EwsManagedApi.msi,然后导入EWS模块
    Import-Module -Name "C:Program FilesMicrosoftExchangeWeb Services2.0Microsoft.Exchange.WebServices.dll"
    #$exchService.UseDefaultCredentials = $true 使用本地默认凭据
    #使用其他凭据
    $Credentials = New-Object Microsoft.Exchange.WebServices.Data.WebCredentials("l","l","ux")
    $exchService = New-Object Microsoft.Exchange.WebServices.Data.ExchangeService
    $exchService.Credentials = $Credentials
    $exchService.AutodiscoverUrl("l@x.com") #登录Exchange
    $exchService
    #绑定收件箱(Inbox)
    $inbox = [Microsoft.Exchange.WebServices.Data.Folder]::Bind($exchService,[Microsoft.Exchange.WebServices.Data.WellKnownFolderName]::Inbox)
    
    #查询Inbox下的所有文件夹
    $FolderList = new-object Microsoft.Exchange.WebServices.Data.FolderView(100)
    $FolderList.Traversal = [Microsoft.Exchange.WebServices.Data.FolderTraversal]::Deep
    $findFolderResults = $inbox.FindFolders($FolderList)
    #查询名为“手机邮箱配置”的文件夹,然后遍历其中的邮件
    $folder_mobile = $findFolderResults|?{$_.DisplayName -eq "手机邮箱配置"}
    $folder_ms= [Microsoft.Exchange.WebServices.Data.Folder]::Bind($exchService,$folder_mobile.Id)
    $mails = $folder_ms.FindItems(100) #查询邮件数量
    foreach ($m in $mails)
    {
    $m.Load()
    $m.Subject
    }

    读取“手机配置邮箱”文件夹下的未读邮件:

    #安装EwsManagedApi.msi,然后导入EWS模块
    Import-Module -Name "C:Program FilesMicrosoftExchangeWeb Services2.0Microsoft.Exchange.WebServices.dll"
    #$exchService.UseDefaultCredentials = $true 使用本地默认凭据
    #使用其他凭据
    $Credentials = New-Object Microsoft.Exchange.WebServices.Data.WebCredentials("l","l","ux")
    $exchService = New-Object Microsoft.Exchange.WebServices.Data.ExchangeService
    $exchService.Credentials = $Credentials
    $exchService.AutodiscoverUrl("l@x.com") #登录Exchange
    
    #绑定收件箱(Inbox)
    $inbox = [Microsoft.Exchange.WebServices.Data.Folder]::Bind($exchService,[Microsoft.Exchange.WebServices.Data.WellKnownFolderName]::Inbox)
    
    #查询Inbox下的所有文件夹
    $FolderList = new-object Microsoft.Exchange.WebServices.Data.FolderView(100)
    $FolderList.Traversal = [Microsoft.Exchange.WebServices.Data.FolderTraversal]::Deep
    $findFolderResults = $inbox.FindFolders($FolderList)
    #找到“手机邮箱配置”文件夹
    $folder_mobile = $findFolderResults|?{$_.DisplayName -eq "手机邮箱配置"}
    $folder_ms= [Microsoft.Exchange.WebServices.Data.Folder]::Bind($exchService,$folder_mobile.Id)
    #读取未读邮件
    $view = New-Object Microsoft.Exchange.WebServices.Data.ItemView(200)
    $searchFilter =  new-object Microsoft.Exchange.WebServices.Data.SearchFilter+IsEqualTo([Microsoft.Exchange.WebServices.Data.EmailMessageSchema]::IsRead, $false)
    $findResults = $exchService.FindItems($folder_mobile.Id,$searchFilter,$view)
    $findResults.TotalCount
    
    #遍历邮件内容
    foreach ($m in $findResults.Items)
    {
    $m.Load()
    $m.From
    $m.Subject
    $m.Body.BodyType
    #$m.Body.Text
    }

    将邮件置为已读:

    if ($m.IsRead -eq $false)
        {
         $m.IsRead = $true
         $m.Update([Microsoft.Exchange.WebServices.Data.ConflictResolutionMode]::AlwaysOverwrite) #提交到Server端
        }

    发送邮件:

    $message = New-Object Microsoft.Exchange.WebServices.Data.EmailMessage -ArgumentList $exchService
    $message.Subject = '11Test is a test222'
    $message.Body = 'This message is being sent through EWS with PowerShell'
    $message.ToRecipients.Add(‘ly@yy.com’)
    $message.SendAndSaveCopy()
  • 相关阅读:
    C 语言 字符串命令 strstr()的用法 实现将原字符串以分割串分割输出
    C# 中对 IEnumerable IEnumerator yield 的理解
    C 语言 用字符输出菱形图案的函数(可自定义边长及字符样式)
    C 语言 对角线添充二维数组
    C 语言 边读 边写入文件
    [转]Page.RegisterRequiresRaiseEvent()与Page.RegisterRequiresPostBack()
    asp.net 判断是手机或电脑访问网页的方式
    表达式树【转】
    ADO.NET中的“返回多个结果集”和“MARS”【转】
    SQL2005转2000的方法【转】
  • 原文地址:https://www.cnblogs.com/dreamer-fish/p/8608387.html
Copyright © 2011-2022 走看看