Advertisement
Guest User

Untitled

a guest
Mar 7th, 2016
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.77 KB | None | 0 0
  1. private static void SearchItems(string email)
  2. {
  3. ItemView iv = new ItemView(10);
  4. FindItemsResults<Item> fiitems = _service.FindItems(WellKnownFolderName.Inbox, "from:username@example.com", iv);
  5.  
  6. foreach (Item item in fiitems)
  7. {
  8. Console.WriteLine("Subject:t" + item.Subject);
  9. Console.WriteLine("Received At:tt" + item.DateTimeReceived.ToString("dd MMMM yyyy"));
  10. Console.WriteLine();
  11. }
  12.  
  13. Console.WriteLine("Press Enter to continue");
  14. Console.ReadLine();
  15. }
  16.  
  17. private static void SearchItems()
  18. {
  19.  
  20. ExtendedPropertyDefinition allFoldersType = new ExtendedPropertyDefinition(13825, MapiPropertyType.Integer);
  21.  
  22. FolderId rootFolderId = new FolderId(WellKnownFolderName.Root);
  23. FolderView folderView = new FolderView(1000);
  24. folderView.Traversal = FolderTraversal.Shallow;
  25.  
  26. SearchFilter searchFilter1 = new SearchFilter.IsEqualTo(allFoldersType, "2");
  27. SearchFilter searchFilter2 = new SearchFilter.IsEqualTo(FolderSchema.DisplayName, "allitems");
  28. SearchFilter.SearchFilterCollection searchFilterCollection = new SearchFilter.SearchFilterCollection(LogicalOperator.And);
  29. searchFilterCollection.Add(searchFilter1);
  30. searchFilterCollection.Add(searchFilter2);
  31.  
  32. FindFoldersResults findFoldersResults = _service.FindFolders(rootFolderId, searchFilterCollection, folderView);
  33.  
  34. if (findFoldersResults.Folders.Count > 0)
  35. {
  36. Folder allItemsFolder = findFoldersResults.Folders[0];
  37. Console.WriteLine("Folder:t" + allItemsFolder.DisplayName);
  38.  
  39. ItemView iv = new ItemView(1000);
  40. FindItemsResults<Item> findResults = allItemsFolder.FindItems("System.Message.DateReceived:01/01/2011..01/31/2011", iv);
  41.  
  42. foreach (Item item in findResults)
  43. {
  44. Console.WriteLine("Subject:t" + item.Subject);
  45. Console.WriteLine("Received At:tt" + item.DateTimeReceived.ToString("dd MMMM yyyy"));
  46. Console.WriteLine("Is New:tt" + item.IsNew.ToString());
  47. Console.WriteLine("Has Attachments:tt" + item.HasAttachments.ToString());
  48. Console.WriteLine();
  49. }
  50.  
  51. }
  52.  
  53. Console.WriteLine("Press Enter to continue");
  54. Console.ReadLine();
  55. }
  56.  
  57. Imports Exchange = Microsoft.Exchange.WebServices.Data
  58.  
  59. Friend Module Main
  60. Public Sub Main()
  61. Dim oService As Exchange.ExchangeService
  62. Dim oUsers As Dictionary(Of String, User)
  63.  
  64. oUsers = New Dictionary(Of String, User)
  65. oUsers.Add("User1", New User("write.to.me1@my.address.com", "Some-Fancy-Password1"))
  66. oUsers.Add("User2", New User("write.to.me2@my.address.com", "Some-Fancy-Password2"))
  67.  
  68. oUsers.ToList.ForEach(Sub(Credential As KeyValuePair(Of String, User))
  69. File.Delete(LOG_FILE_PATH.ToFormat(Credential.Key))
  70. End Sub)
  71.  
  72. oUsers.ToList.ForEach(Sub(Credential As KeyValuePair(Of String, User))
  73. LogFileName = Credential.Key
  74.  
  75. Console.WriteLine("Getting message counts for mailbox [{0}]...", LogFileName)
  76. Console.WriteLine()
  77.  
  78. oService = Service.ConnectToService(Credential.Value)
  79.  
  80. GetAllFolders(oService, LOG_FILE_PATH.ToFormat(Credential.Key))
  81.  
  82. Console.Clear()
  83. End Sub)
  84.  
  85. Console.WriteLine()
  86. Console.Write("Press any key to exit...")
  87. Console.ReadKey()
  88. End Sub
  89.  
  90.  
  91.  
  92. Private Sub GetAllFolders(Service As Exchange.ExchangeService, LogFilePath As String)
  93. Dim oIsHidden As Exchange.ExtendedPropertyDefinition
  94. Dim oFolders As List(Of Exchange.Folder)
  95. Dim oResults As Exchange.FindFoldersResults
  96. Dim lHasMore As Boolean
  97. Dim oChild As Exchange.Folder
  98. Dim oView As Exchange.FolderView
  99.  
  100. Dim _
  101. nPageSize,
  102. nOffSet As Short
  103.  
  104. Dim _
  105. oPaths,
  106. oPath As List(Of String)
  107.  
  108. oIsHidden = New Exchange.ExtendedPropertyDefinition(&H10F4, Exchange.MapiPropertyType.Boolean)
  109. nPageSize = 1000
  110. oFolders = New List(Of Exchange.Folder)
  111. lHasMore = True
  112. nOffSet = 0
  113.  
  114. Do While lHasMore
  115. oView = New Exchange.FolderView(nPageSize, nOffSet, Exchange.OffsetBasePoint.Beginning)
  116. oView.PropertySet = New Exchange.PropertySet(Exchange.BasePropertySet.IdOnly)
  117. oView.PropertySet.Add(oIsHidden)
  118. oView.PropertySet.Add(Exchange.FolderSchema.ParentFolderId)
  119. oView.PropertySet.Add(Exchange.FolderSchema.DisplayName)
  120. oView.PropertySet.Add(Exchange.FolderSchema.FolderClass)
  121. oView.PropertySet.Add(Exchange.FolderSchema.TotalCount)
  122. oView.Traversal = Exchange.FolderTraversal.Deep
  123.  
  124. oResults = Service.FindFolders(Exchange.WellKnownFolderName.MsgFolderRoot, oView)
  125. oFolders.AddRange(oResults.Folders)
  126.  
  127. lHasMore = oResults.MoreAvailable
  128.  
  129. If lHasMore Then
  130. nOffSet += nPageSize
  131. End If
  132. Loop
  133.  
  134. oFolders.RemoveAll(Function(Folder) Folder.ExtendedProperties(0).Value = True)
  135. oFolders.RemoveAll(Function(Folder) Folder.FolderClass <> "IPF.Note")
  136.  
  137. oPaths = New List(Of String)
  138.  
  139. oFolders.ForEach(Sub(Folder)
  140. oChild = Folder
  141. oPath = New List(Of String)
  142.  
  143. Do
  144. oPath.Add(oChild.DisplayName)
  145. oChild = oFolders.SingleOrDefault(Function(Parent) Parent.Id.UniqueId = oChild.ParentFolderId.UniqueId)
  146. Loop While oChild IsNot Nothing
  147.  
  148. oPath.Reverse()
  149. oPaths.Add("{0}{1}{2}".ToFormat(Join(oPath.ToArray, DELIMITER), vbTab, Folder.TotalCount))
  150. End Sub)
  151.  
  152. oPaths.RemoveAll(Function(Path) Path.StartsWith("Sync Issues"))
  153.  
  154. File.WriteAllText(LogFilePath, Join(oPaths.ToArray, vbCrLf))
  155. End Sub
  156.  
  157.  
  158.  
  159. Private LogFileName As String
  160.  
  161. Private Const LOG_FILE_PATH As String = "D:EmailsRemote{0}.txt"
  162. Private Const DELIMITER As String = ""
  163. End Module
  164.  
  165.  
  166.  
  167. Friend Class Service
  168. Public Shared Function ConnectToService(User As User) As Exchange.ExchangeService
  169. Return Service.ConnectToService(User, Nothing)
  170. End Function
  171.  
  172.  
  173.  
  174. Public Shared Function ConnectToService(User As User, Listener As Exchange.ITraceListener) As Exchange.ExchangeService
  175. Dim oService As Exchange.ExchangeService
  176.  
  177. oService = New Exchange.ExchangeService(Exchange.ExchangeVersion.Exchange2013_SP1)
  178. oService.Credentials = New NetworkCredential(User.EmailAddress, User.Password)
  179. oService.AutodiscoverUrl(User.EmailAddress, AddressOf RedirectionUrlValidationCallback)
  180.  
  181. If Listener IsNot Nothing Then
  182. oService.TraceListener = Listener
  183. oService.TraceEnabled = True
  184. oService.TraceFlags = Exchange.TraceFlags.All
  185. End If
  186.  
  187. Return oService
  188. End Function
  189.  
  190.  
  191.  
  192. Private Shared Function RedirectionUrlValidationCallback(RedirectionUrl As String) As Boolean
  193. With New Uri(RedirectionUrl)
  194. Return .Scheme.ToLower = "https"
  195. End With
  196. End Function
  197. End Class
  198.  
  199.  
  200.  
  201. Friend Class User
  202. Public Sub New(EmailAddress As String)
  203. _EmailAddress = EmailAddress
  204. _Password = New SecureString
  205. End Sub
  206.  
  207.  
  208.  
  209. Public Sub New(EmailAddress As String, Password As String)
  210. _EmailAddress = EmailAddress
  211. _Password = New SecureString
  212.  
  213. Password.ToList.ForEach(Sub(Chr As Char)
  214. Me.Password.AppendChar(Chr)
  215. End Sub)
  216.  
  217. Password.MakeReadOnly()
  218. End Sub
  219.  
  220.  
  221.  
  222. Public Shared Function GetUser() As User
  223. Dim sEmailAddress As String
  224. Dim oUserInput As ConsoleKeyInfo
  225.  
  226. Console.Write("Enter email address: ")
  227. sEmailAddress = Console.ReadLine
  228. Console.Write("Enter password: ")
  229.  
  230. GetUser = New User(sEmailAddress)
  231.  
  232. While True
  233. oUserInput = Console.ReadKey(True)
  234.  
  235. If oUserInput.Key = ConsoleKey.Enter Then
  236. Exit While
  237.  
  238. ElseIf oUserInput.Key = ConsoleKey.Escape Then
  239. GetUser.Password.Clear()
  240.  
  241. ElseIf oUserInput.Key = ConsoleKey.Backspace Then
  242. If GetUser.Password.Length <> 0 Then
  243. GetUser.Password.RemoveAt(GetUser.Password.Length - 1)
  244. End If
  245.  
  246. Else
  247. GetUser.Password.AppendChar(oUserInput.KeyChar)
  248. Console.Write("*")
  249.  
  250. End If
  251. End While
  252.  
  253. If GetUser.Password.Length = 0 Then
  254. GetUser = Nothing
  255. Else
  256. GetUser.Password.MakeReadOnly()
  257. Console.WriteLine()
  258. End If
  259. End Function
  260.  
  261.  
  262.  
  263. Public ReadOnly Property EmailAddress As String
  264.  
  265. Public ReadOnly Property Password As SecureString
  266. End Class
  267.  
  268.  
  269.  
  270. Friend Class TraceListener
  271. Implements Exchange.ITraceListener
  272.  
  273. Public Sub Trace(TraceType As String, TraceMessage As String) Implements Exchange.ITraceListener.Trace
  274. File.AppendAllText("{0}.txt".ToFormat(Path.Combine("D:EmailsTraceOutput", Guid.NewGuid.ToString("D"))), TraceMessage)
  275. End Sub
  276. End Class
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement