Извлечение / назначение неправильного адреса электронной почты отправителя

Мне нужно извлечь Outlook письма и назвать его с частью адреса электронной почты отправителя (после "@" и до ".com"). Мои коды работают нормально, но что касается переименования, некоторые файлы назначены неправильно, особенно электронные письма в потоке. Я пытался найти решения в течение последних 2 недель, но не смог. Буду признателен, если кто-нибудь может помочь мне в этом вопросе. Спасибо!

[ОБНОВЛЕНО]: Внутри цепочки. Это текущий список всех последующих ответов, начиная с исходного письма.

Я написал коды для извлечения электронных писем в указанное место, и после того, как оно будет извлечено, это электронное письмо должно называться "company_name_datetime receive_title of email". Имя пользователя Предположим, чтобы быть извлеченным из адреса электронной почты отправителя. Например, если я получил электронное письмо от john@companyA.com, заголовок темы - "проект", когда я запускаю извлечение, путь переименования должен быть "company A_12-08-2017 09:30AM_Project".

Тем не менее, с этим текущим кодом, некоторые электронные письма будут названы с другим названием компании, особенно электронные письма в потоке. Например, john@companyA.com отправил электронное письмо с заголовком "Project", и я (cheese@companyB.com) ответил обратно, и заголовок теперь станет "RE:Project". Когда я запускаю извлечение, способ переименования электронной почты для электронной почты "Project" является правильным, тогда как для электронной почты "RE:Project", результатом переименования оказывается "companyC_datetime receive_RE:Project", где компания C даже не существует в этом письме, (Компания C приходит из других писем).

    Set SubFolder = OutlookApp.Session.GetFolderFromID(EntryID(i), StoreID(i))
    On Error Resume Next
    For j = 1 To SubFolder.Items.Count
        Set MItem = SubFolder.Items(j)
        strEmail = Split(SubFolder.Items(j).SenderEmailAddress, "@")(1)
        If (InStr(1, strEmail, ".") > 0) Then
            strFullName = Split(strEmail, ".")(0)
        End If
        StrReceived = Format(MItem.ReceivedTime, "dd-mm-yyyy H.MMAMPM")
        strSubject = MItem.Subject
        'Rename file as Bank name_Date_Title
        StrName = StripIllegalChar(strSubject)
        StrFile = StrSaveFolder & strFullName & "_" & StrReceived & "_" & StrName & ".msg"
        StrFile = Left(StrFile, 256)
        MItem.SaveAs StrFile, 3
    Next j
    On Error GoTo 0
 Next i

1 ответ

On Error Resume Next для ожидаемых ошибок.

Я предполагаю, что есть непредвиденная ошибка, вероятно, когда объект MItem не является почтовым элементом.

Если это так, эта строка потерпит неудачу.

strEmail = Split(SubFolder.Items(j).SenderEmailAddress, "@")(1)

Теперь из-за неправильного использования On Error Resume Next у вас нет шансов исправить ошибки. strEmail остается тем, что было до ошибки.

Dim MItem as object
If MItem.class = olMail then 
Другие вопросы по тегам