Is it possibly to access the folders and items of other Exchange accounts other than the one of the logged in user?
是否可以访问除登录用户之外的其他Exchange帐户的文件夹和项目?
Can I do this via Exchange Web Services Managed API?
我可以通过Exchange Web服务托管API执行此操作吗?
3 个解决方案
#1
15
Yes it is possible, but you should know the password of the other user or grab in some ways this credentials (NetworkCredential
object). The typical first lines of you code could be
是的,这是可能的,但您应该知道其他用户的密码或以某种方式获取此凭据(NetworkCredential对象)。你代码的典型第一行可能是
ExchangeService myService = new ExchangeService (ExchangeVersion.Exchange2007_SP1);
myService.Credentials = new NetworkCredential ("user@mycorp.local", "P@ssword00");
so you can access Exchange Server Web Services with the account which is other as the current user. See ExchangeService object description for more information.
因此,您可以使用其他作为当前用户的帐户访问Exchange Server Web服务。有关更多信息,请参阅ExchangeService对象说明。
If you are an admin you can make user impersonation by SMTP address.
如果您是管理员,则可以通过SMTP地址进行用户模拟。
#2
4
Knowing the password is wrong and using impersonation (these days) is wrong.
知道密码是错误的并且使用模拟(这些天)是错误的。
Here's how you do it.
这是你如何做到的。
ExchangeService _service = new ExchangeService(ExchangeVersion.Exchange2010_SP2);
//CREDENTIALS OF AN ACCOUNT WHICH HAS READ ACCESS TO THE CALENDAR YOU NEED
_service.Credentials = new WebCredentials(username, password);
_service.Url = new Uri(serviceURL);
SearchFilter.SearchFilterCollection searchFilter = new SearchFilter.SearchFilterCollection();
searchFilter.Add(new SearchFilter.IsGreaterThanOrEqualTo(AppointmentSchema.Start, DateTime.Now.AddDays(-1)));
searchFilter.Add(new SearchFilter.IsLessThanOrEqualTo(AppointmentSchema.Start, DateTime.Now.AddDays(2)));
ItemView view = new ItemView(50);
view.PropertySet = new PropertySet(BasePropertySet.IdOnly, AppointmentSchema.Subject, AppointmentSchema.Start, AppointmentSchema.AppointmentType, AppointmentSchema.End);
//THIS NEXT LINE!!!
var calendarSearch = new FolderId(WellKnownFolderName.Calendar, new Mailbox("email@ofsomemailbox.com"));
var appointments = _service.FindItems(calendarSearch, searchFilter, view);
#3
0
I suggest to use impersonation instead of login for each user. Via impersonation you can impersonate users. Its not the same like full access. Full access is on behave of, impersonation is act as.
我建议使用模拟而不是每个用户登录。通过模拟,您可以冒充用户。它与完全访问权限不同。完全访问是表现的,模仿就是充当。
A pre of impersonation is you have one username and password instead of having x usernames and passwords.
假冒的前提是你有一个用户名和密码,而不是x用户名和密码。
You can use impersonation like this way:
您可以像这样使用模拟:
ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2010);
service.Credentials = new NetworkCredential(appName, appPassword, emailDomain);
service.ImpersonatedUserId = new ImpersonatedUserId(ConnectingIdType.SmtpAddress, userToImpersonate);
when a user has delegate access to someone else, you can access the folder of the other user. For example: Person A will be impersonated and is able to access Person B
当用户具有委托给其他人的访问权限时,您可以访问其他用户的文件夹。例如:人员A将被模拟并且能够访问人员B.
#1
15
Yes it is possible, but you should know the password of the other user or grab in some ways this credentials (NetworkCredential
object). The typical first lines of you code could be
是的,这是可能的,但您应该知道其他用户的密码或以某种方式获取此凭据(NetworkCredential对象)。你代码的典型第一行可能是
ExchangeService myService = new ExchangeService (ExchangeVersion.Exchange2007_SP1);
myService.Credentials = new NetworkCredential ("user@mycorp.local", "P@ssword00");
so you can access Exchange Server Web Services with the account which is other as the current user. See ExchangeService object description for more information.
因此,您可以使用其他作为当前用户的帐户访问Exchange Server Web服务。有关更多信息,请参阅ExchangeService对象说明。
If you are an admin you can make user impersonation by SMTP address.
如果您是管理员,则可以通过SMTP地址进行用户模拟。
#2
4
Knowing the password is wrong and using impersonation (these days) is wrong.
知道密码是错误的并且使用模拟(这些天)是错误的。
Here's how you do it.
这是你如何做到的。
ExchangeService _service = new ExchangeService(ExchangeVersion.Exchange2010_SP2);
//CREDENTIALS OF AN ACCOUNT WHICH HAS READ ACCESS TO THE CALENDAR YOU NEED
_service.Credentials = new WebCredentials(username, password);
_service.Url = new Uri(serviceURL);
SearchFilter.SearchFilterCollection searchFilter = new SearchFilter.SearchFilterCollection();
searchFilter.Add(new SearchFilter.IsGreaterThanOrEqualTo(AppointmentSchema.Start, DateTime.Now.AddDays(-1)));
searchFilter.Add(new SearchFilter.IsLessThanOrEqualTo(AppointmentSchema.Start, DateTime.Now.AddDays(2)));
ItemView view = new ItemView(50);
view.PropertySet = new PropertySet(BasePropertySet.IdOnly, AppointmentSchema.Subject, AppointmentSchema.Start, AppointmentSchema.AppointmentType, AppointmentSchema.End);
//THIS NEXT LINE!!!
var calendarSearch = new FolderId(WellKnownFolderName.Calendar, new Mailbox("email@ofsomemailbox.com"));
var appointments = _service.FindItems(calendarSearch, searchFilter, view);
#3
0
I suggest to use impersonation instead of login for each user. Via impersonation you can impersonate users. Its not the same like full access. Full access is on behave of, impersonation is act as.
我建议使用模拟而不是每个用户登录。通过模拟,您可以冒充用户。它与完全访问权限不同。完全访问是表现的,模仿就是充当。
A pre of impersonation is you have one username and password instead of having x usernames and passwords.
假冒的前提是你有一个用户名和密码,而不是x用户名和密码。
You can use impersonation like this way:
您可以像这样使用模拟:
ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2010);
service.Credentials = new NetworkCredential(appName, appPassword, emailDomain);
service.ImpersonatedUserId = new ImpersonatedUserId(ConnectingIdType.SmtpAddress, userToImpersonate);
when a user has delegate access to someone else, you can access the folder of the other user. For example: Person A will be impersonated and is able to access Person B
当用户具有委托给其他人的访问权限时,您可以访问其他用户的文件夹。例如:人员A将被模拟并且能够访问人员B.