Estrai i link dall'email in base al testo dell'ancora, non all'href

2

Sto mettendo insieme un flusso di lavoro di Automator che mi consentirà di associare un tasto di scelta rapida a un elenco di Smart Mailbox e di automatizzare in modo efficace l'attività di fare clic su "Annulla iscrizione" nelle email che contengono tale stringa di testo.

Finora, ho avuto un successo marginale se l'URL effettivo contiene la parola "annulla iscrizione". Quello che vorrei fare, invece, è trovare dove appare la parola Annulla iscrizione e invece prendere solo quegli URL. Quindi, in termini HTML, immagino di trovare un collegamento tramite il suo testo e quindi di agire su href

Quando utilizzo content ottengo solo il contenuto dell'e-mail ma quando uso source ottengo i collegamenti. Fondamentalmente ho bisogno di un modo per mappare il contenuto alla fonte.

Spero che abbia senso. Questo è quello che ho finora:

on run {input, parameters}
set theSource to {}
tell application "Mail"
    repeat with aMessage in input
        -- source or content
        set end of theSource to aMessage's source & return
    end repeat
end tell

return theSource as text
end run
    
posta webkenny 22.12.2014 - 16:30
fonte

1 risposta

1

Esegui automaticamente html in un'email.

Non ho familiarità con Smart Mailbox e quale lingua usa ma sotto c'è uno script VBA per Outlook che cerca il testo "Click" che è un href di un URL, estrae l'URL e lo esegue in Internet Explorer come un link.

Il codice è molto disordinato con pochissima documentazione ma utilizza la funzionalità Split Array di VBA per suddividere le linee del messaggio e-mail e quindi estrarre la stringa corretta dopo le virgolette doppie "" (Chr (34)) usando il posizionamento dell'array vale a dire. array urltag (1) - primo elemento nell'array urltag.

Spero che questo aiuti qualcuno.

LaunchURL(itm As MailItem)

Dim bodyString As String
Dim bodyStringSplitLine
Dim bodyStringSplitWord
Dim targetline
Dim urltag
Dim splitLine
Dim splitWord
Dim intCount As Integer
Dim Fail As Integer
Dim Beforecurrent As Integer
Dim Aftercurrent As Integer
Dim Found As Integer


Fail = 0
Found = 0

bodyString = itm.HTMLBody ' Mailitem.body vs Mailitem.HTMLBody  - oMailitem.body
bodyStringSplitLine = Split(bodyString, vbCrLf) 'vbCrLf has no meaning in HTML?

For Each splitLine In bodyStringSplitLine
    bodyStringSplitWord = Split(splitLine, " ")


    For intCount = LBound(bodyStringSplitWord) To UBound(bodyStringSplitWord)
    'For Each splitWord In bodyStringSplitWord ie find out how many iterations to do.

    If intCount > 2 Then
    Beforecurrent = intCount - 1
    Aftercurrent = intCount + 2
    Else
    Beforecurrent = 1
    End If

        If bodyStringSplitWord(intCount) = "click" Then

            targetline = bodyStringSplitWord(Aftercurrent)
            urltag = Split(targetline, Chr(34))
           'i = MsgBox(urltag(1), vbOKOny) test box remove apostrophe to uncomment

            Shell ("C:\Program Files\Internet Explorer\IEXPLORE.EXE" & " " & urltag(1))
           'Shell ("cmd" & " " & "/k" & " " & "echo" & " " & bodyStringSplitWord(Aftercurrent) & " " & Fail & " " & Beforecurrent)   test box remove apostrophe to uncomment

        Found = 1

        Exit Sub
        Else:

        Fail = Fail + 1

        'Shell ("cmd" & " " & "/c" & " " & "echo boo hoo") Test box remove apostrophe to uncomment

        End If
    Next

Next

Set itm = Nothing

End Sub
    
risposta data 04.02.2016 - 11:23
fonte

Leggi altre domande sui tag