🙏 Helfen Sie jetzt mit, unser LibreOffice Forum zu erhalten! 🙏
Mit Ihrer Spende sichern Sie den Fortbestand, den Ausbau und die laufenden Kosten dieses Forums. 🌱

🍀 Jeder Beitrag zählt – vielen Dank für Ihre Unterstützung!🍀

❤️ DANKE >> << DANKE ❤️

>> Dank Ihrer Unterstützung -> Keine Werbung für alle registrierten LibreOffice-Forum User! <<
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗

Makro Shell-Funktion, E-Mail-Client

Alles zur Programmierung im LibreOffice.
Antworten
Caro
Beiträge: 9
Registriert: Mo 25. Apr 2011, 18:52

Makro Shell-Funktion, E-Mail-Client

Beitrag von Caro » Mo 12. Dez 2011, 14:47

Hallo,

ich möchte aus einem Makro heraus eine Mail mit Anhang verschicken. Dazu nutze ich den E-Mail-Client von www.blat.net.
Wenn ich aber mit einer Shell-Funktion den entsprechenden Befehlt absetze, passiert gar nichts. Ich habe den Befehl im einen DOS-Fenster (nutze Windows XP) ausprobiert und dort funktioniert meine Befehlszeite super. Aus dem Marko mit Shell(...) passiert eben nichts.
Auch wenn ich z.B. den Befehl shell("c:\windows\system32\cmd.exe",1, , true) eingebe passiert nichts. Andere Anwendungen, die kein Dos-Fenster benötigen öffnen problemlos.

Gibt es da einen bestimmten Trick oder ist das normal so?

Danke für eure Antworten.

Gruß Caro

Bertold

Re: Makro Shell-Funktion, E-Mail-Client

Beitrag von Bertold » Mo 12. Dez 2011, 17:51

Vielleicht hilft dir der Code von Frieder Delor
https://sites.google.com/site/starbasic ... -anhaengen

Frieder
Beiträge: 28
Registriert: Di 13. Dez 2011, 12:28
Kontaktdaten:

Re: Makro Shell-Funktion, E-Mail-Client

Beitrag von Frieder » Di 13. Dez 2011, 12:55

Hallo Caro

"blat" benötigt kein Dos-Fenster, um zu funktionieren.
Wenn ich es aus einem Makro per Shell-Befehl aufrufe, arbeitet es einfach im Hintergrund, ohne irgendeine Rückmeldung zu generieren.
Man sieht also erst, wenn man in sein E-Mail Konto schaut, ob die nachricht versendet wurde ( unter gesendete Nachrichten ) oder nicht.
Wenn du direct die Kontrolle über die Mail haben willst, so wäre für dich das Versenden über z.b. über Thunderbird vielleicht besser geeignet.
Die Nachricht wird dann zwar erstellt, aber nicht direct Versand, du musst dann also noch auf Senden klicken,
hast aber immer die volle Kontrolle über die Nachricht, und kannst gegebenenfalls auch noch per Hand Änderungen vornehmen.

hier ein beispiel-Code für Thunderbird

Code: Alles auswählen

Sub mail_Thunderbird
'Testen ob Writer oder nicht.
If Not ThisComponent.supportsService("com.sun.star.text.TextDocument") Then
 MsgBox "Dieses Makro kann nur aus einem Writer Dokument ausgeführt werden." ,16,"Fehler"
 exit Sub
End if
'Pfad und name bestimmen
GlobalScope.BasicLibraries.LoadLibrary( "Tools" )
  sUrl = ThisComponent.getURL()
  Path = DirectoryNameoutofPath(sUrl, "/")
  Pfad1 = ConvertFromUrl(Path)
  sDir = Pfad1 & GetPathSeparator & "Test1.pdf"
  sDir1 = converttourl(sDir) 
  sName =FileNameOutOfPath(sURL)
  sName=Left(sName,len(sName)-4)
  'exportfilter
dim args1(1) as new com.sun.star.beans.PropertyValue
  args1(0).Name = "ExportFormFields" 'just show the contents of the Form.Fields
  args1(0).Value= True
  args1(1).Name = "Printing" ' you don't need that.
  args1(1).Value= 0
dim args2(1) as new com.sun.star.beans.PropertyValue
  args2(0).Name = "FilterName"
  args2(0).Value = "writer_pdf_Export"
  args2(1).Name = "FilterData"
  args2(1).Value = args1
'Die geöffnete Datei als pdf exportieren   compose
  ThisComponent.storeToURL(sDir1,args2())
 shell("I:\Program Files (x86)\Mozilla Thunderbird\thunderbird.exe",_
  1,"-compose to=Empfännger@gmx.de" +",attachment=" +"'"+ sDir1+"," +sUrl+"'" +",subject=Betreff" + ",body='hallo Text hier. '" )
  
End Sub
Beispiel Code für blat oder sendEmail findest du wie schon erwähnt auf meiner Homepage.

Gruß Frieder

Caro
Beiträge: 9
Registriert: Mo 25. Apr 2011, 18:52

Re: Makro Shell-Funktion, E-Mail-Client

Beitrag von Caro » Do 15. Dez 2011, 20:52

Vielen Dank für eure schnellen Antworten.
Das mit Thunderbird ist die Lösung, die ich danach gewählt habe.

Ich habe mit blat wirdlich alles ausprobiert, auch ohne Dos-Shell, aber es funktioniert einfach nicht. Es geht keine Mail raus. Ich habe es genau so gemacht, wie auf der von dir angegebenen Seite. Von dort habe ich diese Lösung.

Naja vielleicht geht es ja irgendwann doch noch.

Danke nochmal
Caro

Frieder
Beiträge: 28
Registriert: Di 13. Dez 2011, 12:28
Kontaktdaten:

Re: Makro Shell-Funktion, E-Mail-Client

Beitrag von Frieder » Fr 16. Dez 2011, 17:43

Caro hat geschrieben:Vielen Dank für eure schnellen Antworten.
Das mit Thunderbird ist die Lösung, die ich danach gewählt habe.

Ich habe mit blat wirdlich alles ausprobiert, auch ohne Dos-Shell, aber es funktioniert einfach nicht. Es geht keine Mail raus. Ich habe es genau so gemacht, wie auf der von dir angegebenen Seite. Von dort habe ich diese Lösung.
Naja vielleicht geht es ja irgendwann doch noch.
Danke nochmal
Caro
Hallo Caro,

dass mit blat funktioniert bei mir ganz gut. Wahrscheinlich hast du irgendwo " oder ' oder ein Leerzeichen zu viel oder zu wenig.
Wenn du den Code hier postest, kann ich schauen, an was es liegt.
Mache dabei aber nur die e-Mail-Adresse und das Passwort unkenntlich, und lasse den Rest so wie er ist.
Ich habe den Code nochmal etwas verbessert.
Jetzt musst du nicht mehr direkt in dem zusammengesetzten String Anpassungen vornehmen,
sondern kannst die einzelnen Variablen so verändern, dass sie dir passen. (Bei mir läuft es.)
P.S. habe es auf meiner Homepage auch geändert.
PP.S mit googlemail.com bekomme ich es auch nicht hin.

Code: Alles auswählen

Sub mail_Blat
Dim sUrl$ , Path$, Pfad1$ ,sDir$ ,sDir1$
GlobalScope.BasicLibraries.LoadLibrary( "Tools" )
  sUrl = ThisComponent.getURL()
  Path = DirectoryNameoutofPath(sUrl, "/")
  Pfad1 = ConvertFromUrl(Path)
  sDir = Pfad1 & GetPathSeparator & "Test1.pdf"
  sDir1 = converttourl(sDir) 
   
dim args1(1) as new com.sun.star.beans.PropertyValue

  args1(0).Name = "ExportFormFields" 'just show the contents of the Form.Fields
  args1(0).Value= True
  args1(1).Name = "Printing" ' you don't need that.
  args1(1).Value= 0
dim args2(1) as new com.sun.star.beans.PropertyValue
  args2(0).Name = "FilterName"
  args2(0).Value = "writer_pdf_Export"
  args2(1).Name = "FilterData"
  args2(1).Value = args1
 ' args2(2).Name="OutputStream"
 'args2(2).Value=oOutputStream
  ThisComponent.storeToURL(sDir1,args2())
  
Dim sPath As String
Dim sServer As String
Dim sSender As String
Dim sLoginName As String
Dim sPassword As String
Dim sRecipient AS String
Dim sSubject As String
Dim sBody As String
Dim sMasage As String
sPath = "C:\Users\Nansen\Desktop\blat276\full\blat.exe"
sSender = "wurzel.manager@web.de"
sLoginName = sSender
sServer = "smtp.web.de"
sPassword = "XXXXXXX"
sRecipient = "delorfr@googlemail.com"
sSubject = "Subject"
sBody = "Hallo wie gehts?" & Chr(10) & _
        "Hier kommt der Text." & Chr(10) &_
        Chr(10) & _
        "Viele Grüße Frieder"
sMasage = sPath & _
        " - -to " & sRecipient & _
        " -s """ & sSubject & """" & _
        " -body """ & sBody & """" & _
        " -attach " & sDir & "," & ConvertFromUrl(sUrl) & _
        " -server " & sServer & _
        " -f " & sSender & _
        " -u " & sLoginName & _
        " -pw " & sPassword
          
Shell(sMasage)
End Sub
Gruß Frieder

Caro
Beiträge: 9
Registriert: Mo 25. Apr 2011, 18:52

Re: Makro Shell-Funktion, E-Mail-Client

Beitrag von Caro » Sa 17. Dez 2011, 17:11

Hallo Frieder,
viiiiiiiiiiiiiiiiiiiiielen herzlichen Dank.

Ich habe, dachte ich wenigstens, genau so gemacht. Immerhin hatte das ganz aus dem DOS-Fenster ja funktioniert. Ich habe deine Zeile kopiert und jetzt funktioniert es tatsächlich.

Nochmal vielen Dank, du hastmirsehr geholfen

Caro


An alle, die das LibreOffice-Forum gern nutzen und unterstützen wollen:


Bitte helfen Sie uns mit 7 Euro pro Monat.
Durch Ihren Beitrag tragen Sie dazu bei, unsere laufenden Kosten für die kommenden Monate zu decken.
Unkompliziert per Kreditkarte oder PayPal.
Als ein kleines Dankeschön werden Sie im LO-Forum als SUPPORTER gekennzeichnet.



Antworten