Extraiga los enlaces del correo electrónico según el texto delimitador, no el href

2

Estoy creando un flujo de trabajo de Automator que me permitirá vincular una tecla de acceso rápido a un listado de Smart Mailbox y automatizar de manera efectiva la tarea de hacer clic en "Cancelar suscripción" en los correos electrónicos que tienen esa cadena de texto.

Hasta ahora, he tenido un éxito marginal si la URL real tiene la palabra "cancelar suscripción" en ella. Lo que me gustaría hacer, en cambio, es encontrar dónde aparece la palabra Cancelar suscripción y, en su lugar, capturar solo esas URL. Entonces, en términos de HTML, imagine que estoy encontrando un enlace por su texto y luego actúo sobre el href

Cuando uso content solo obtengo el contenido del correo electrónico, pero cuando uso source obtengo enlaces. Básicamente necesito una manera de asignar el contenido a la fuente.

Espero que tenga sentido. Esto es lo que tengo hasta ahora:

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
    
pregunta webkenny 22.12.2014 - 16:30

1 respuesta

1

Ejecutar automáticamente html en un correo electrónico.

No estoy familiarizado con Smart Mailbox y el idioma que usa, pero a continuación se encuentra un script VBA para Outlook que busca el texto "Click", que es un href a una URL, extrae la URL y la ejecuta en Internet Explorer como un enlace web.

El código es muy desordenado con muy poca documentación, pero utiliza la funcionalidad Split Array de VBA para dividir las líneas del mensaje de correo electrónico y luego extraer la cadena correcta después de las comillas dobles "" (Chr (34)) usando el posicionamiento de matriz es decir. array urltag (1) - primer elemento en array urltag.

Espero que esto ayude a alguien.

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
    
respondido por el Paul 04.02.2016 - 11:23

Lea otras preguntas en las etiquetas