Extrahieren Sie Links aus E-Mails basierend auf dem Ankertext, nicht der href

2

Ich erstelle einen Automator-Workflow, mit dem ich einen Hotkey an eine Smart Mailbox-Liste binden und das Klicken auf "Abbestellen" in E-Mails mit dieser Textzeichenfolge effektiv automatisieren kann.

Bisher war ich nur geringfügig erfolgreich, wenn die tatsächliche URL das Wort "Abbestellen" enthält. Ich möchte stattdessen herausfinden, wo das Wort Abbestellen angezeigt wird, und stattdessen nur diese URLs abrufen. Stellen Sie sich also in HTML vor, ich finde einen Link anhand seines Texts und handle dann auf dem href

Wenn ich benutze content Ich bekomme aber nur den Inhalt der E-Mail, wenn ich sie benutze source Ich bekomme Links. Grundsätzlich brauche ich eine Möglichkeit, den Inhalt der Quelle zuzuordnen.

Ich hoffe das ergibt Sinn. Das habe ich bisher:

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
webkenny
quelle
Einige davon sind Mailto-Links anstatt href
markhunte
Wahr. Mir geht es gut mit denen, die auch gefangen genommen werden. Sobald die Links korrekt zurückgegeben wurden, kann ich bestimmen, was zu tun ist. d.h. eine E-Mail senden oder einen Browser öffnen.
webkenny
Haben Sie eine Lösung dafür gefunden? Ich suche etwas ähnliches.
james_fuller
Leider noch nicht Ich habe es vorerst auf Eis gelegt, aber ich bin immer noch daran interessiert.
webkenny

Antworten:

1

Führen Sie HTML automatisch in einer E-Mail aus.

Ich bin mit Smart Mailbox nicht vertraut und weiß nicht, welche Sprache es verwendet. Im Folgenden ist jedoch ein VBA-Skript für Outlook aufgeführt, das nach dem Text "Click" sucht, der eine Referenz zu einer URL darstellt, die URL extrahiert und im Internet Explorer als Weblink ausführt.

Der Code ist sehr unübersichtlich mit sehr wenig Dokumentation, aber er verwendet die Split Array-Funktionalität von VBA, um die Zeilen der E-Mail-Nachricht auszubrechen und dann die richtige Zeichenfolge nach Anführungszeichen "" (Chr (34)) mithilfe der Array-Positionierung zu extrahieren, d. H. array urltag (1) - erstes Element im Array urltag.

Hoffe das hilft jemandem.

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
Paul
quelle