2012-02-10 29 views
13

kullanılarak alınan posta kutularının hatalı posta kutusu Exchange Web Hizmetleri tarafından yönetilen API kullanarak, belirli bir posta kutusundan (izinlerim var) gelen Gelen Kutusu öğeleri almaya çalışıyorum. Kodu ilk olarak kendi e-posta adresimi kullanarak AutodiscoverUrl aracılığıyla test ettim ve iyi çalışıyor. Ancak, diğer e-posta adresini kullanmaya çalıştığımda, EWS hala benim kendi gelen kutusu öğelerini alır. Bu bir önbellek ya da bir şey yüzünden mi? aşağıdaki gibiExchange Web Hizmetleri tarafından yönetilen API C#

Benim kodudur:

ExchangeService ex = new ExchangeService(ExchangeVersion.Exchange2010_SP1); 
    ex.AutodiscoverUrl("[email protected]"); 

    FindItemsResults<Item> findResults = ex.FindItems(WellKnownFolderName.Inbox, new ItemView(10)); 

    foreach (Item item in findResults.Items) 
     Console.WriteLine(item.Subject); 

cevap

29

AutodiscoverUrl verdiği e-posta adresini hangi ile karşı bağlayıcı olan posta kutusu ilgisi yoktur.

Gelen kutusu öğelerini başka bir kullanıcı posta kutusundan almak için en az iki yol vardır: Erişim ve kimliğe bürünme yetkisi verme.

diğer kullanıcıların posta kutusuna erişim yetkisi verilmesini varsa, FindItems çağrısında parametre olarak posta kutusu belirtebilirsiniz: Eğer permissions to impersonate diğer kullanıcı varsa

FindItemsResults<Item> findResults = ex.FindItems(
    new FolderId(WellKnownFolderName.Inbox, new Mailbox("[email protected]")), 
    new ItemView(10)); 

, diğer kimliğine bürünebilir kullanıcı EWS'de bağlanma ve FindItem için aşağıdaki çağrı bürünülen kullanıcının gelen kutusuna üzerinde çalışacak zaman:

ExchangeService ex = new ExchangeService(ExchangeVersion.Exchange2010_SP1); 
ex.AutodiscoverUrl("[email protected]"); 
ex.ImpersonatedUserId = new ImpersonatedUserId(ConnectingIdType.SmtpAddress, "[email protected]"); 
ItemsResults<Item> findResults = ex.FindItems(WellKnownFolderName.Inbox, new ItemView(10)); 

Yasal Uyarı: aslında üzerinde test etmeden yukarıdaki kodu yazdım gerçek Exchange sunucusu.

+1

Teşekkürler, erişim yetkisine sahip olduğum için (ve kimliğe bürünen izinler yok) ilk yaklaşımınızı yaptım ve işe yaradı! – communista

+1

Bir koruyucu! Teşekkürler! –

+0

Muhtemelen bunu anlamak için çok fazla zaman harcadım: 1) hedef posta kutularını içeren filtreyi belirle: 'Import-Module ActiveDirectory; get-aduser -filter * | burada {$ _. samaccountname -like "bob"}, 2) hedef posta kutularını içeren bir yönetim kapsamı yaratır 'new-ManagementScope –Name bob_targetuser –RecipientRestrictionFilter {samaccountname-like" bob "}'; onunla çalışma değildi, 'Yeni ManagementRoleAssignment -Name appimpersonationrole -Role ApplicationImpersonation -User usernamethatisallowedImpersonzationrights -CustomRecipientWriteScope ben kimliğe bürünme kullanılarak paylaşılan hesabından e-posta göndermeye çalışıyordu – mbrownnyc

11

numaralı telefonu kullanarak e-posta göndermek istiyorsanız, sadece yetkilendirme izni olmadan önce onu e-posta ile kaydet. mesajı göndermek için gerekli smtp adresini ayarlayacaktır.

 ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2007_SP1); 
     service.Credentials = new WebCredentials("user1", "1234", "domain.com"); 
     service.AutodiscoverUrl("[email protected]"); 

     EmailMessage email = new EmailMessage(service); 
     email.ToRecipients.Add("[email protected]"); 
     email.Subject = "HelloWorld"; 
     email.Body = new MessageBody("Sent by using the EWS Managed API"); 

     //save it first! 
     email.Save(new FolderId(WellKnownFolderName.Drafts, "[email protected]")); 

     email.Send(); 

ben bu hatayı önlemek için kullandı: "Bir posta kutusu bulunmayan bir hesap olarak bir istek yaparken, herhangi seçkin klasörün Kimlikleri için posta kutusu birincil SMTP adresi belirtmelisiniz"

+1

bob_targetuser': 3) nesne EKL'nin kapsamını atamak Aşağıdaki hata: "Hesabın istenen kullanıcının kimliğine bürünme izni yok." Yine de Exchange Online web sitesi, paylaşılan kullanıcı olarak e-posta göndermemi sağlıyor. Bu cevabı bulana kadar beni rahatsız ediyordu, yapmaya çalıştığım şeye oldukça benzer bir şeydi. İlk önce kaydetme anahtarıdır. Teşekkür ederim. Not; Kaydet ve SendAndSaveCopy kullanıyorum. –

İlgili konular