dukenukem264
Goto Top

Thunderbird, Link in Email von bestimmten Absender automatisch öffnen lassen

Hallo zusammen,

gibt es eine Möglichkeit in Thunderbird, bei dem der eingefügte Link in einer Email von bestimmten Absendern automatisch geöffnet wird?

z.B.: Email von Ebay-Kleinanzeige zum Verlängern der Anzeige kommt an (der Absender, den ich angebe) und der Link zum Verlängern der Anzeige wird dann automatisch geöffnet und die Email gelöscht?

Vielleicht ist es auch nur Wunschdenken. Irgendjemand vielleicht eine Idee oder so?

Vielen Dank
PS: Thunderbird ist die Version 91.0.3

Lg Dukenukem263

Content-Key: 1201398821

Url: https://administrator.de/contentid/1201398821

Printed on: April 26, 2024 at 04:04 o'clock

Member: bloodstix
bloodstix Aug 27, 2021 at 12:50:54 (UTC)
Goto Top
Hallo,

per default definitiv nicht. Vielleicht gibt es dazu ein Plugin, oder du
bastelst dir selbst ein Plugin.

Grüße
bloody
Member: Dukenukem264
Dukenukem264 Aug 27, 2021 at 12:53:20 (UTC)
Goto Top
Hallo Bloody,

das habe ich mir fast gedacht. Bei den Plugins habe ich leider nichts gefunden.
Du meinst so eine Art Macro in Thunderbird? Du weißt nicht zufällig wo bzw. wie ich das machen kann? face-smile

Mfg
Dukenukem264
Member: bloodstix
bloodstix Aug 27, 2021 at 12:58:08 (UTC)
Goto Top
Da wirst du dich wohl durchbeißen müssen.
https://developer.thunderbird.net/add-ons/about-add-ons
Kannst jedoch noch schauen ob das ggf. per Filter geht, eine Aktion auszuführen aber ich berfürchte fast - selbst wenn - das es nicht flexibel genug konfigurierbar ist für deinen Zweck.
Member: Dukenukem264
Dukenukem264 Aug 27, 2021 at 13:00:39 (UTC)
Goto Top
Danke trotzdem für deine Mühe face-smile

Mfg
Dukenukem264
Mitglied: 149062
149062 Aug 27, 2021 updated at 14:37:11 (UTC)
Goto Top
Mach das doch gleich mit entsprechenden IMAP Bibliotheken anstatt in Thunderbird selbst.
IMAP Clients für die Kommandozeile gibts ja wie Sand am Meer. Für das automatische verarbeiten von Mails gibt es hier ja im Forum diverse Skripte, wie z.B.
E-Mail Client für Kommandozeile
Linux: Automatisiert Posteingang checken und Skript ausführen
usw.
Member: colinardo
colinardo Aug 27, 2021 updated at 15:24:25 (UTC)
Goto Top
Servus.
Zitat von @149062:
Mach das doch gleich mit entsprechenden IMAP Bibliotheken anstatt in Thunderbird selbst.
Würde ich auch machen. Lässt sich dann auch über Taskplaner und Co. laufen lassen.

Hier mal schnell ein Beispiel mit Powershell und der Mailkit-Bibliothek.

Link Regular Expression für das Extrahieren aus dem Body (Zeile 79) und Absenderadresse (Zeile 70) sind anzupassen. Hatte nur noch eine alte Mail zur Verfügung, kann sein das das nicht mehr aktuell ist.
# IMAP-Host
$IMAP_HOST = 'imap.domain.tld'  
# IMAP-Port
$IMAP_PORT = 993
# IMAP USERNAME
$IMAP_USERNAME = 'USERNAME'  
# IMAP PASSWORD
$IMAP_PASSWORD = 'PASSWORD'  
# ==========================

function Load-NugetAssembly {
    [CmdletBinding()]
    param(
        [string]$url,
        [string]$name,
        [string]$zipinternalpath,
        [switch]$downloadonly
    )
    # Accept all TLS protocols
    [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.SecurityProtocolType]::GetNames([System.Net.SecurityProtocolType]) 
    if($psscriptroot -ne ''){  
        $localpath = join-path $psscriptroot $name
    }else{
        $localpath = join-path $env:TEMP $name
    }
    $tmp = "$env:TEMP\$([IO.Path]::GetRandomFileName())"  
    $zip = $null
    try{
        if(!(Test-Path $localpath)){
            Add-Type -A System.IO.Compression.FileSystem
            write-host "Downloading and extracting required library '$name' ... " -F Green -NoNewline  
            (New-Object System.Net.WebClient).DownloadFile($url, $tmp)
            $zip = [System.IO.Compression.ZipFile]::OpenRead($tmp)
            $zip.Entries | ?{$_.Fullname -eq $zipinternalpath} | %{
                [System.IO.Compression.ZipFileExtensions]::ExtractToFile($_,$localpath)
            }
            Unblock-File -Path $localpath
            write-host "OK" -F Green  
        }
        if(!$downloadonly.IsPresent){
            Add-Type -Path $localpath -EA Stop
        }

    }catch{
        write-host ($_.Exception.LoaderExceptions | fl | out-string)
        throw "Error: $($_.Exception.Message)"  

    }finally{
        if ($zip){$zip.Dispose()}
        if(Test-Path $tmp){del $tmp -Force}
    }  
}

Load-NugetAssembly 'https://www.nuget.org/api/v2/package/Portable.BouncyCastle/1.8.8' -name 'BouncyCastle.Crypto.dll' -zipinternalpath 'lib/net40/BouncyCastle.Crypto.dll' -EA Stop  
Load-NugetAssembly 'https://www.nuget.org/api/v2/package/System.Buffers/4.5.1' -name 'System.Buffers.dll' -zipinternalpath 'lib/net461/System.Buffers.dll' -EA Stop  
Load-NugetAssembly 'https://www.nuget.org/api/v2/package/MimeKit/2.10.1' -name 'MimeKit.dll' -zipinternalpath 'lib/net45/MimeKit.dll' -EA Stop  
Load-NugetAssembly 'https://www.nuget.org/api/v2/package/MailKit/2.10.1' -name 'MailKit.dll' -zipinternalpath 'lib/net45/MailKit.dll' -EA Stop  


try{
    # IMAP Client erstellen
    $imap = New-Object MailKit.Net.Imap.ImapClient
    # Mit IMAP Server verbinden
    $imap.Connect($IMAP_HOST,$IMAP_PORT,[MailKit.Security.SecureSocketOptions]::Auto)
    # Authentifizierung
    $imap.Authenticate($IMAP_USERNAME,$IMAP_PASSWORD)
    # Posteingang im ReadWrite Modus öffnen
    [void]$imap.Inbox.Open([MailKit.FolderAccess]::ReadWrite)

    # ungelesene Nachrichten mit bestimmtem Absender im Posteingang suchen
    $message_ids = $imap.Inbox.Search([MailKit.Search.SearchQuery]::And([MailKit.Search.SearchQuery]::NotSeen,[MailKit.Search.SearchQuery]::FromContains('noreply@ebay-kleinanzeigen.de')))  
    
    # wenn es Nachrichten gibt
    if($message_ids.Count -gt 0){
        # Für jede Nachricht
        foreach ($id in $message_ids){
            # Nachricht von ID abrufen
            $m = $imap.Inbox.GetMessage($id)
            # suche nach einem bestimmten Link mittels Regex
            $link = [regex]::Match($m.HtmlBody,'(?is)href="([^"]+anzeige-verlaengern-mail\.html[^"]+)').Groups[1].Value  
            # wenn Link gefunden wurde
            if ($link){
                # rufe den Link auf
                "Opening Link: $link"  
                $result = Invoke-WebRequest $link
                # Zeige das Ergebnis
                $result
                # markiere die Nachricht als gelesen
                $imap.Inbox.AddFlags($id,[MailKit.MessageFlags]::Seen,$true)    
            }
                
        }
    }else{
        # Keine ungelesenen Nachrichten vorhanden
        write-host "No unseen message with sender in inbox."  
    }
    # close inbox
    $imap.Inbox.Close($false)
}catch{
    throw $_
}finally{
    # Disconnect
    if ($imap.Connected){
        $imap.Disconnect($true)
    }
}

Ansonsten, kleines Add-On für Thunderbird wäre auch kein großes Problem.

Auf Anfrage kann ich auch das liefern => PN

Grüße Uwe