Извлечение данных из электронного письма (или несколько тысяч электронных писем) [Exchange, базирующийся]

final String text = "abcdefghijklmnopqrstuvwxyz";
final Random random = new Random();
final int length = 5;

for (int i = 0; i < 3; i++) {
    int pos = random.nextInt(text.length() - length)
    System.out.println(text.substring(pos, pos + length));
}

В качестве альтернативы для создания подстроки вы можете напечатать отдельные символы:

for (int i = 0; i < 3; i++) {
    for (int j = 0, pos = random.nextInt(text.length() - length); j < length; j++)
        System.out.print(text.charAt(pos + j));
    System.out.println();
}
5
задан Craig 30 December 2008 в 00:05
поделиться

2 ответа

Существует много различных способов достигнуть сообщения в обменном почтовом ящике, но так как кажется, что это - что-то, что Вы только собираетесь хотеть выполнить однажды для извлечения данных, которые я предложил бы писать макросу VBA для выполнения в Outlook, самом (открывавшем обменный рассматриваемый почтовый ящик в Outlook). Довольно легко выполнить итерации через почтовые объекты в определенном почтовом ящике и прочитать основной текст от них. Можно затем записать текстовый файл только с материалом, который Вы хотите.

2
ответ дан 14 December 2019 в 01:19
поделиться

Вот код, который я использовал....

Private Sub btnGo_Click()
  If ComboBox1.SelText <> "" Then
    Dim objOutlook As New Outlook.Application
    Dim objNameSpace As Outlook.NameSpace
    Dim objInbox As MAPIFolder
    Dim objMail As mailItem

    //Get the MAPI reference
    Set objNameSpace = objOutlook.GetNamespace("MAPI")

    //Pick up the Inbox
    Set objInbox = objNameSpace.GetDefaultFolder(olFolderInbox)
    For Each objFolder In objInbox.Folders
       If (objFolder.Name = ComboBox1.SelText) Then
          Set objInbox = objFolder
       End If
    Next objFolder

    //Loop through the items in the Inbox
    Dim count As Integer
    count = 1

    For Each objMail In objInbox.Items
       lblStatus.Caption = "Count: " + CStr(count)
       If (CheckBox1.Value = False Or objMail.UnRead = True) Then
          ProcessMailItem (objMail.Body)
          count = count + 1
          objMail.UnRead = False
       End If
    Next objMail
  End If
End Sub

Private Sub ProcessMailItem(strBody As String)
   Open "C:\file.txt" For Append As 1

   Dim strTmp As String
   strTmp = Replace(strBody, vbNewLine, " ")
   strTmp = Replace(strTmp, vbCrLf, " ")
   strTmp = Replace(strTmp, Chr(13) & Chr(10), " ")
   strTmp = Replace(strTmp, ",", "_")

   //Extra Processing went here (Deleted for brevity)
   Print #1, strTmp
   Close #1

End Sub

Private Function Strip(strStart As String, strEnd As String, strBody As String) As String
   Dim iStart As Integer
   Dim iEnd As Integer

   iStart = InStr(strBody, strStart) + Len(strStart)
   If (strEnd = "xxx") Then
      iEnd = Len(strBody)
   Else
      iEnd = InStr(strBody, strEnd) - 1
   End If

   Strip = LTrim(RTrim(Mid(strBody, iStart, iEnd - iStart)))
End Function


Private Sub UserForm_Initialize()
  Dim objOutlook As New Outlook.Application
  Dim objNameSpace As Outlook.NameSpace
  Dim objInbox As MAPIFolder
  Dim objFolder As MAPIFolder

  //Get the MAPI reference
  Set objNameSpace = objOutlook.GetNamespace("MAPI")

  //Pick up the Inbox
  Set objInbox = objNameSpace.GetDefaultFolder(olFolderInbox)

  //Loop through the folders under the Inbox
  For Each objFolder In objInbox.Folders
    ComboBox1.AddItem objFolder.Name
  Next objFolder
End Sub
7
ответ дан 14 December 2019 в 01:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: