1. Home
  2. News
  3. Download
    1. Thunderbird
    2. Thunderbird Beta Version
    3. Language Pack (User Interface)
    4. Dictionaries (Spell Check)
  4. Help & Lexicon
    1. Instructions for Thunderbird
    2. Questions & Answers (FAQ) about Thunderbird
    3. Help for this Website
  5. Forums
    1. Unresolved Threads
    2. Latest Posts
    3. Threads of the last 24 hours
  • Login or register
  • 
  • Search
This Thread
  • Everywhere
  • This Thread
  • This Forum
  • Forum
  • entry
  • Articles
  • Pages
  • More Options
  1. Thunderbird Mail DE
  2. Forum
  3. Hilfe zu E-Mail und allgemeines Arbeiten
  4. Allgemeines Arbeiten / Konten einrichten / Installation & Update

Konten in Thunderbird per Mako VBA eritteln

    • Resolved
  • yogi
  • February 3, 2018 at 4:58 PM
  • Thread is marked as Resolved.
  • yogi
    Member
    Posts
    13
    Member since
    24. Mar. 2011
    • February 3, 2018 at 4:58 PM
    • #1

    Um Rückfragen vorzubeugen, bitten wir um folgende Angaben:

    • Thunderbird-Version: in der Regel die neueste
    • Betriebssystem + Version: diverse, W7 bis W10, MAC
    • Kontenart (POP / IMAP): Beide
    • Postfach-Anbieter (z.B. GMX): GMX
    • Eingesetzte Antiviren-Software: Diverse
    • Firewall (Betriebssystem-intern/Externe Software):
    • Router-Modellbezeichnung (bei Sende-Problemen):

    Hallöchen

    in unserem Verein werden Aktionen per Mail an einzelne Mitglieder verschickt. Dafür verantwortlich sind einige Koordinatoren. Die Koordinatoren benützen Thunderbird oder Outlook mit verschiedenen eigenen Konten neben dem Vereinskonto. Die Mails werden per VBA-Makros aus Excel generiert. Dies funktioniert (fast) bestens. Das Problem: als Absender sollte immer das Vereinskonto verwendet werden. Bei Outlook ist das gelöst, wie kann nun die Sequenznummer des Vereinskonto bei Thunderbird ermittelt werden? (Die kann bei jedem Koordinator anders sein)

    Beispiel der vorhandenen Konten bei einem Koordinator :

    aaa.bbb@gmx.ch

    vereinskonto@gmx.ch

    eee.fff@abc.ch

    With NeueThunderbirdEMail

    .EmailFormat = 1

    .SendenVonKonto = 2 ' <= Hier ist die Sequenznummer für Account vereinskonto@gmx.ch

    .Empfaenger = "xyz@gmx.ch"

    .....

    .....

    .....

    End With


    Für Outlook sieht der Code für die Ermittlung der Sequnznummer so aus:

    For i = 1 To objOutlook.Session.Accounts.Count

    If Left(UCase(objOutlook.Session.Accounts.Item(i)), 6) = "Verein"Then

    Set objOutlookAccount = objOutlook.Session.Accounts.Item(iac)

    Exit For

    End If

    Next i ' i = 1 To objOutlook.Session.Accounts.Count


    Wie muss nun der entsprechende Code für Thunderbird aussehen?

    Gruss

    yogi

  • losgehts
    Senior Member
    Reactions Received
    13
    Posts
    925
    Member since
    12. Sep. 2007
    Helpful answer
    1
    • February 3, 2018 at 8:59 PM
    • #2

    Hallo,


    zeig doch mal bitte deinen bereits funktionierenden Code für die Erstellung einer E-Mail (für Thunderbird).


    Als ich das letzte Mal via VBA E-Mails für Thunderbird und Outlook erstellt habe (ist schon ein paar Jahre her), gab es noch nicht die Möglichkeit, "echte Thunderbird-Objekte" zu benutzen

    Code
    With NeueThunderbirdEMail
       .EmailFormat = 1

    hast du Verweise verwendet? Falls ja: welche?

    Ich kenne bis jetzt nur die beiden Möglichkeiten: das Mailto-Protokoll zu verwenden quasi einen Hyperlink, oder über die Kommandozeilenparameter (3.) zu verwenden.

    Meinem Kenntnisstand nach ist es nicht möglich, über diese beiden Möglichkeiten die Absenderadresse auszuwählen. Aber ich lasse mich gerne eines besseren belehren. Doch bitte zeig mir zunächst deinen kompletten Code für den Thunderbird, damit ich weiß, wo ich anfangen muss und evtl. auf den neusten Stand komme.


    Ansonsten könnten AddOns wie "correctIdentity" oder "virtualIdentity" helfen. correctIdentiy habe ich noch nie verwendet. Und ob das Zusammenspiel vom Kommandozeilenaufruf und Virtual-Identity funktioniert, habe ich auch noch nicht ausprobiert (sitze gerade an einem Linuxrechner).


    Da fällt mir noch ein: man könnte auch ein extra Profil mit nur dem einen Vereins-Account erstellen.

    Dann würde man vielleicht zunächst Thunderbird beenden und das spezielle Profil starten. Oder mit vielleicht mit der -no-remote Option das spezielle zusätzlich starten (weiß nicht, was weniger schlecht ist), bevor man die E-Mail erstellt.

    Das E-Mailprogramm zunächst zu beenden und dann wieder zu öffnen gefällt mir nicht so recht.


    Eigentlich empfehle ich immer, statt Thunderbird ein extra dafür gemachtes Programm zu verwenden. Es gibt z.B. blat.exe, ein kleines Kommandozeilenprogramm, das unter Windows E-Mails versenden kann. Arbeitet man mit IMAP stört sich daran weder Thunderbird, noch Outlook, noch sonst ein E-Mailclient. Arbeitet man mit POP3, müsste man eben die E-Mail an sich selbst im BCC senden. Um die gesendete E-Mail dann wieder im Client (Thunderbird oder Outlook oder ... ) zu haben.

    Viele Grüße,

    Ulrich

  • yogi
    Member
    Posts
    13
    Member since
    24. Mar. 2011
    • February 4, 2018 at 4:32 PM
    • #3

    Tach Ulrich

    erstmals Danke für die Info.

    Der Code ist recht simpel:

    Code
    email = "ich@hispeed.ch"
        cc = "dich@hispeed.ch"
        bcc = "nochjemand@hispeed.ch"
        subj = "Testing"
        body = "Testtext"
        strFile2 = "D:/Test macros/test_anhang.txt"
        
        thund = "C:\Program Files (x86)\Mozilla Thunderbird\thunderbird.exe " & _
                  "-compose " & """" & _
                  "to='" & email & "'," & _
                  "cc='" & cc & "'," & _
                  "bcc='" & bcc & "'," & _
                  "subject='" & subj & "'," & _
                  "body='" & body & "'," & _
                  "attachment='" & strFile2 & "'" & """"
        
        
        result = Shell(thund, vbNormalFocus)
    Display More

    Das funktioniert bestens. Das Problem, als Absender wird das Standardkonto des Senders verwendet, und nicht das Vereinskonto. Es muss aber das Vereinskonto sein damit Antworten der Empfänger im Vereinskonto erscheinen. Was im Code noch fehlt ist die Angabe des Senderkontos.

    Ein externes Programm wie blat.exe ist nicht akzeptabel, die Koordinatoren wollen die Mails vor dem Senden ansehen und allenfalls noch editieren.

    Gruss

    yogi

  • Drehmoment
    Guest
    • February 4, 2018 at 7:12 PM
    • #4

    Laut dieser Seite hier http://kb.mozillazine.org/Command_line_a…8Thunderbird%29 gibt es einen Parameter "preselectid". Die zugehörige ID des Kontos findet man in der prefs.js. Die könntest du parsen.

  • yogi
    Member
    Posts
    13
    Member since
    24. Mar. 2011
    • February 8, 2018 at 7:37 PM
    • #5

    Tach Drehmoment

    Vielen Dank für den Tip, es hat geklappt!

    Der Code sieht nun so aus:

    Code
    Public Sub SendEmail()
        Dim thund As String
        Dim email As String
        Dim cc As String
        Dim bcc As String
        Dim subj As String
        Dim body As String
        Dim strFile2 As String
        Dim result
        Dim tunderbird_loc As String
        Dim prefs_line As String
        '
        ' Suche ...\Thunderbird\Profiles\*.default
        '
        tunderbird_loc = Environ("APPDATA")
        tunderbird_loc = tunderbird_loc & "\Thunderbird\Profiles\"
        default_dir = Dir(tunderbird_loc & "*.default", vbDirectory)
        If default_dir <> "" Then
          '
          ' Es gibt ein .default Ordner, also auch Thunderbird
          '
          prefs_file = Dir(tunderbird_loc & default_dir & "\prefs.js")
          '
          ' Öffne die Datei prefs.js und suche nach dem gewünschten Account
          '
          Close #1
          Open tunderbird_loc & default_dir & "\prefs.js" For Input As #1
          '
          ' Zeilenweise lesen und analysieren
          '
          Do While Not EOF(1)    ' Auf Dateiende abfragen.
            Line Input #1, prefs_line    ' Datenzeilen lesen.
            If InStr(1, prefs_line, "mia.obs@gmx.ch", vbTextCompare) > 0 Then
              '
              ' Diese Zeile enthält den Account, Nummer extrahiern
              '
              pos_is = InStr(1, prefs_line, "mail.identity.", vbTextCompare)
              prefs_line = Mid(prefs_line, pos_is + Len("mail.identity.") + 2)
              index_is = "id"
              Do
                index_is = index_is & Left(prefs_line, 1)
                prefs_line = Mid(prefs_line, 2)
              Loop Until Not IsNumeric(Left(prefs_line, 1))
              Exit Do
            End If
          Loop ' While Not EOF(1)
          Close #1    ' Datei schließen
          '
          ' Empfänger setzen
          '
          email = "jemand@hispeed.ch"
          cc = "copyan@hispeed.ch"
          bcc = "blind_copy@hispeed.ch"
          subj = "Testing"
          body = "Hier kommt der grosse Test" & vblf & _
                    "Gruss" & vblf & "Tester"
          '
          ' Anhang festlegen
          '
          strFile2 = "D:\Test\Test macros\via.jpg"
          strFile2 = "file:///" & Replace(strFile2, "\", "/")
          '
          ' Befehl zusammensetzen
          '
          thund = "C:\Program Files (x86)\Mozilla Thunderbird\thunderbird.exe " & _
                  "-compose " & _
                  "format=" & "1" & "," & _
                  "preselectid=" & index_is & "," & _
                  "to='" & email & "'," & _
                  "cc='" & cc & "'," & _
                  "bcc='" & bcc & "'," & _
                  "subject='" & subj & "'," & _
                  "body='" & body & "'," & _
                  "attachment='" & strFile2 & "'" & """"
          '
          ' Mail erstellen, kann dann in Thunderbird kontrolliert und allenfalls
          ' geändert werden. Falls dann alles OK, auf "Senden" klicken.
          '
          result = Shell(thund, vbNormalFocus)
        End If
      End Sub '  SendEmail
    Display More

    Gruss

    yogi

  • Drehmoment
    Guest
    • February 11, 2018 at 10:24 AM
    • #6

    Schön, dass es klappt.

    Noch ein Hinweis. Dein Script sucht nach dem Default-Profil und holt daraus letztendlich die ID. Falls die Anwender mehrere Profile haben, muss diese ID nicht unbedingt mit der des aktiven Profils übereinstimmen. Eine wirklich gute Idee, wie man das jeweils aktive Profi ermitteln kann, habe ich nicht. Mir fällt dazu nur ein, dass du es daran erkennen kannst, dass die zugeörige Lock-Datei vorhanden ist und auch daran, dass die prefs.js einen aktuellen Zeitstempel hat.

  • Thunder January 5, 2019 at 2:28 AM

    Moved the thread from forum Spezielle Probleme to forum Allgemeines Arbeiten.

Current app version

  • Thunderbird 115.5.1 veröffentlicht

    November 28, 2023 at 2:53 AM

No Advertisements

There are no advertisements here. Maybe you give the website owner (Alexander Ihrig - aka "Thunder") instead something to be able to finance these sites in the long run. Many Thanks!

Thank you for the support!

Coffee Amount to be spent?

Donate now via Paypal*

*Forwarding to PayPal.Me

Thunderbird Mail DE
  1. Imprint & Contact
  2. Privacy Policy
    1. Cookie Policy
  3. Terms of Use
  4. Donation Call for Thunderbird
Help for this website
  • All website support articles
  • How to use website search
  • How to create a forums user account
  • How to create and edit a forums thread
  • How to reset your forums password
Copyright © 2003-2023 Thunderbird Mail DE

You are NOT on an official page of the Mozilla Foundation. Mozilla®, mozilla.org®, Firefox®, Thunderbird™, Bugzilla™, Sunbird®, Seamonkey®, XUL™ and the Thunderbird logo are (among others) registered trademarks of the Mozilla Foundation.

Powered by WoltLab Suite™