Threading e-mail di notifica Jira in Outlook 2010


9

Quando ricevo e-mail di notifica Jira 4.2 in Outlook 2010, queste non vengono inviate. Naturalmente per impostazione predefinita Jira invia e-mail con gli argomenti in questo modo: [JIRA] Created: (LTST-4) improve documentation, [JIRA] Assigned: (LTST-4) improve documentation. Ho letto online che Outlook 2010 utilizza esclusivamente il campo Oggetto per eseguire il thread, quindi avere i suddetti argomenti costringerà quelle e-mail a NON essere sottoposte a thread, il che è effettivamente il caso. Nota che Gmail, ad esempio, non sottopone a thread quelle stesse e-mail (ma l'app di posta di Apple iPhone 4 lo fa davvero!).

Così ho ottimizzato il mio setup Jira per rimuovere l' 'azione che viene eseguita' verbo dal soggetto e ora i soggetti e-mail tutto simile a questa: [JIRA] (LTST-4) improve documentation. E Gmail li infila allegramente. Ma Outlook 2010 non funziona ancora!

C'è qualcosa che posso fare in termini di configurazione di Jira o Outlook per forzare Outlook 2010 a inviare e-mail di notifica Jira?

Grazie Kirill

Risposte:


5

La seguente macro VBA lascia solo 1 messaggio per problema di Jira nella Posta in arrivo. Elimina anche i messaggi relativi a problemi risolti / chiusi, dal momento che non è necessario esaminarli

' Tools>References: Microsoft VBScript Regular Expressions 5.5, Microsoft Scripting Runtime

Sub RemoveDuplicateJiraKeys()
    Dim i As Object
    Dim re As New RegExp
    Dim m As MatchCollection
    Dim d As New Dictionary
    Dim act As String ' Commented, Resolved, Updated...
    Dim key As String ' e.g. RS-123

    re.Pattern = "\[JIRA\] (.*?): \((.*?)\)"
    For Each i In Session.GetDefaultFolder(olFolderInbox).Items
      ' luckily the items come in chronological order
      Set m = re.Execute(i.Subject)
      If m.Count >= 1 Then
        act = m(0).SubMatches(0)
        key = m(0).SubMatches(1)
        If d.Exists(key) Then d(key).Delete: d.Remove (key) ' same Jira key but older
        If act = "Resolved" Or act = "Closed" Then i.Delete Else d.Add key, i
      End If
    Next i
End Sub

1

Outlook 2010 organizza conversazioni (threading) solo per argomento. La rimozione dell'azione dall'oggetto e-mail in JIRA dovrebbe tenerli insieme nella posta in arrivo di Outlook. Sembra che potresti aver bisogno di controllare le impostazioni di Outlook. Maggiori informazioni disponibili qui .


1
Sì, è quello che ho pensato. Purtroppo non succede. I messaggi con lo stesso oggetto esatto NON sono uniti. Ho anche visto il link che menzioni, niente di rilevante lì.
Kirillka,

0

Ho usato una combinazione dell'altro post di risposta e questo articolo per scrivere la mia macro che utilizza la libreria Redemption per unire le conversazioni.

Questo esegue la scansione della cartella corrente, selezionando eventuali e-mail jira, estrae la chiave di emissione dall'oggetto. Se non è stata vista prima quella chiave, salva l'indice di conversazione in una raccolta in base alla chiave del problema e, se l' ha già vista, aggiorna l'e-mail con l'indice di conversazione salvato.

Dim ConversationIndexes As New Collection

Sub GroupJira()
    Dim MapiNamespace As Object
    Dim RdoSession As Object

    Dim Item As Object
    Dim RdoItem As Object

    Dim ConversationKey As String
    Dim ConversationIndex As String

    ' Get all the required handles
    Set MapiNamespace = Outlook.GetNamespace("MAPI")
    MapiNamespace.Logon
    Set RdoSession = CreateObject("Redemption.RDOSession")
    RdoSession.MAPIOBJECT = MapiNamespace.MAPIOBJECT

    'Setup some subject patterns to extract the issue key
    Dim Matches As MatchCollection
    Dim UpdateSubjectPattern As New RegExp
    UpdateSubjectPattern.Pattern = "\[JIRA\] \(([A-Z]+-[0-9]+)\) .*"
    Dim MentionedSubjectPattern As New RegExp
    MentionedSubjectPattern.Pattern = "\[JIRA\] .* mentioned you on ([A-Z]+-[0-9]+) \(JIRA\)"

    For Each Item In Outlook.ActiveExplorer.CurrentFolder.Items
        If TypeOf Item Is MailItem Then
            If Left(Item.Subject, 7) = "[JIRA] " Then
                ' Get a key for this conversation, opic for now
                ConversationKey = Item.ConversationTopic
            Set Matches = UpdateSubjectPattern.Execute(Item.Subject)
            If Matches.Count >= 1 Then ConversationKey = Matches(0).SubMatches(0)
            Set Matches = MentionedSubjectPattern.Execute(Item.Subject)
            If Matches.Count >= 1 Then ConversationKey = Matches(0).SubMatches(0)

                ' Get any saved indexes
                ConversationIndex = ""
                On Error Resume Next
                ConversationIndex = ConversationIndexes.Item(ConversationKey)
                On Error GoTo 0

                If ConversationIndex = "" Then
                    ' Save this index if not seen yet
                    ConversationIndexes.Add Item.ConversationIndex, ConversationKey
                ElseIf Item.ConversationIndex <> ConversationIndex Then
                    ' Set the item's index if it has
                    Set RdoItem = RdoSession.GetMessageFromID(Item.EntryID, Item.Parent.StoreID)
                    RdoItem.ConversationIndex = ConversationIndex
                    RdoItem.Save
                End If
            End If
        End If
    Next Item
End Sub

Ciò richiede le seguenti librerie:

  • Libreria di riscatto per l'accesso RDO completo, necessaria per impostare l'indice di conversazione (ciò non richiede elevazione per registrarlo)
  • Un riferimento alla Microsoft VBScript Regular Expressions 5.5libreria per estrarre le chiavi di emissione dagli oggetti di posta.

Oh, e devi anche modificare le impostazioni di sicurezza macro per eseguirlo.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.