在下面的Powershell脚本中,我需要查看共享邮箱mobileprint@abcdef.com
中的收件箱/消息。但是脚本会返回管理员帐户admin@abcdef.com
中的收件箱/消息。
管理员帐户有权访问共享邮箱,并且应向脚本提供访问共享邮箱的凭据。
[Reflection.Assembly]::LoadFile("C:\Program Files\Microsoft\Exchange\Web Services\2.0\Microsoft.Exchange.WebServices.dll")
$s = New-Object Microsoft.Exchange.WebServices.Data.ExchangeService
$AdminName = "admin@abcdef.com"
$Pass = Get-Content "cred_.txt" | ConvertTo-SecureString
$s.Credentials = New-Object Net.NetworkCredential($AdminName , $Pass)
$s.AutodiscoverUrl("mobileprint@abcdef.com", {$true})
$inbox = [Microsoft.Exchange.WebServices.Data.Folder]::Bind($s,[Microsoft.Exchange.WebServices.Data.WellKnownFolderName]::Inbox)
$inbox
答案 0 :(得分:0)
我建议您签出https://gsexdev.blogspot.com/2016/10/ews-basics-accessing-and-using-shared.html
在使用EWS访问文件夹方面,它有一些非常好的解释。
您最感兴趣的部分就是这里:
要访问EWS中的邮箱文件夹,您需要知道该文件夹的EWSId,该规则的一个例外是WellKnownFolders,例如Inbox,Contacts,Calendar等。使用这些WellKnowFolders,您可以告诉EWS您想要的文件夹不知道该文件夹的EWSId的邮箱。
例如,要访问共享邮箱中的收件箱,请使用FolderId重载来定义要访问的folderId,然后将其绑定到该文件夹:
$ folderid = new-objectMicrosoft.Exchange.WebServices.Data.FolderId([Microsoft.Exchange.WebServices.Data.WellKnownFolderName] :: Inbox,$ MailboxName)
$ Inbox = [Microsoft.Exchange.WebServices.Data.Folder] :: Bind($ service,$ folderid)
答案 1 :(得分:0)
谢谢亨里克。我终于明白了。我必须使用“模拟”行来使其正常工作。这有助于Using EWS impersonation and PowerShell to log into an Exchange Online Mailbox
private Menu thismenu;
if (condition)
{
if(thismenu != null)
{
thismenu.findItem(R.id.menu_save).setVisible(true);
Toast.makeText(ProfileActivity.this,
""+thismenu.findItem(R.id.menu_save).getTitle(),
Toast.LENGTH_SHORT).show();
}else
{
thismenu.findItem(R.id.menu_save).setVisible(false);
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.profile_menu, menu);
thismenu = menu;
return true;
}