Как проверить, является ли электронная почта частью разговора? - PullRequest
0 голосов
/ 23 апреля 2019

В нашей компании есть процесс обслуживания клиентов (CS), в котором после того, как клиент сообщит об ошибке с нашим программным обеспечением, мы получим электронное письмо с жалобой на общую тему («Ошибка, отправленная пользователем») и краткое описание ошибки. Затем мы исправим проблему и отправим письмо клиенту. Проблема может иметь 1 или несколько электронных писем между нашим отделом CS и клиентом.

Мой скрипт Python использовал модуль win32com, чтобы извлекать электронные письма из Outlook и помещать их в фрейм данных, каждая строка в качестве записи для уникальной сообщаемой ошибки. После прочтения (https://docs.microsoft.com/en-us/office/vba/api/outlook.mailitem.conversationid), я решил перейти к message.ConversationID. Однако общая тема электронной почты означает, что иногда они группируют все несвязанные электронные письма вместе, делая ConversationID не совсем таким уникальным или полезным для меня.

Может ли кто-нибудь дать мне руководство о том, как лучше всего решить эту проблему?

outlook = win32com.client.Dispatch('Outlook.Application').GetNamespace('MAPI')

def message_to_row(message, year, start_month, end_month): # Process each email into row of information
    message_time = message.ReceivedTime
    winrec_time = message.ReceivedTime
    rec_time = pywintypes.Time(winrec_time) 
    rec_year = rec_time.year
    rec_month = rec_time.month
    rec_day = rec_time.day
    rec_time_string = str(rec_time.hour) + ":" + str(rec_time.minute)
    rec_time = format(datetime.datetime.strptime(rec_time_string, "%H:%M"), "%H:%M")

    if rec_year >= year:
        if rec_month in range(start_month, end_month):
            convo_id = message.ConversationID
            message_body = message.body.replace("_", " ")
            row = [convo_id, rec_year, rec_month, 
                   rec_day, rec_time, message_body]              
    return row
...