🙏 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. 🤗

[gelöst] Email mit Datenübergabe aus einem Base-Formular

Base ermöglicht es Ihnen, Ihre Daten in einer Datenbank direkt mit LibreOffice zu bearbeiten.
harald235

[gelöst] Email mit Datenübergabe aus einem Base-Formular

Beitrag von harald235 » So 27. Mai 2012, 08:46

Hallo liebe Helfende,

aus einem Base-Formular heraus möchte ich über eine Schaltfläche Thunderbird aufrufen und gleichzeitig die Emailadresse des aktuell angezeigten Datensatzes , einen Betreff und einen eventuellen Anhang mit übergeben. Thunderbird ohne Datenübergabe zu öffnen funktioniert problemlos über das Ereignis "Aktion" der Schaltfläche, aber mit Datenübergabe kriege ich nicht hin.

openSUSE 12.1
LibreOffice Base 3.5.3.2
eingebettete HSQLDB 1.8
Thunderbird 12.0

Vor einigen Jahren (2009) hat Gino in einem anderen Forum eine schöne Lösung gepostet, aus meiner Sicht: leider nur für Windows.

Code: Alles auswählen

Sub SendMail
   Dim oDoc, oForm as Object
   Dim betr,  sMail_Adr as String
   oDoc = thisComponent
   oForm = oDoc.drawpage.forms.getbyindex(0)
   sMail_Adr = oForm.getByName("txteMail 1").Text
   
   if sMail_Adr = "" then
   msgbox "Keine Mailadresse vorhanden!" & CHR(13) & "Der Vorgang wird abgebrochen!" , 48, "Mail senden"
   Exit Sub
   end if
   
   'attN = "C:\Ordner\" & "Test.pdf" 'Anhang beifügen
   attA = ConvertToURL (attN)
   Empf = (sMail_Adr)
   betr= "Testmail" 'Betreffzeile
   anrT= "Sehr geehrte Damen und Herren"
   shell("C:\Programme\Mozilla Thunderbird\thunderbird.exe",1,"-compose to=" + empf +",attachment=" + attA + ",subject=" + betr  + ",body=" + anrT)
End Sub
Ich kriege unter openSUSE 12.1 die Verbindung zu Thunderbird nicht hin, versucht habe ich:

Code: Alles auswählen

   shell("/usr/share/applications/thunderbird.desktop",1,"-compose to=" + empf +",attachment=" + attA + ",subject=" + betr  + ",body=" + anrT)
Das funktioniert aber nicht.

Es wäre toll, wenn Ihr mir helfen könntet.

Gruß harald

EDIT: Fehler: "Basic-Laufzeitfehler. Datei nicht gefunden." Die ist aber am angegebenen Ort vorhanden und funktioniert auch.
Zuletzt geändert von harald235 am So 27. Mai 2012, 10:19, insgesamt 1-mal geändert.

RobertG
* LO-Experte *
Beiträge: 2884
Registriert: Sa 19. Mai 2012, 17:37
Kontaktdaten:

Re: Email mit Datenübergabe aus einem Base-Formular

Beitrag von RobertG » So 27. Mai 2012, 09:59

Hallo Harald,

hast Du einmal
/usr/bin/thunderbird
versucht? Gebe ich auf der Shell "which thunderbird" ein, so ist dies das Ergebnis unter OpenSuSE 11.4.
Die Datei mit der Endung "Desktop" ist nicht die Programmdatei.

Gruß

Robert
https://de.libreoffice.org/get-help/documentation/
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare

harald235

Re: Email mit Datenübergabe aus einem Base-Formular

Beitrag von harald235 » So 27. Mai 2012, 10:18

Hallo Robert,

ich danke Dir sehr, Dein Vorschlag war goldrichtig, so funktioniert es. Mit der openSUSE-Struktur und den -Befehlen darf ich noch besser umgehen lernen.
Der Verweis auf die Desktop-Verknüpfung reichte offensichtlich nicht aus.

Hier die bei mir funktionierende Sub:

Code: Alles auswählen

Sub SendMail
   Dim oDoc, oForm as Object
   Dim betr,  sMail_Adr as String
   oDoc = thisComponent
   oForm = oDoc.drawpage.forms.getbyindex(0)
   sMail_Adr = oForm.getByName("txteMail 1").Text
   
   if sMail_Adr = "" then
   msgbox "Keine Mailadresse vorhanden!" & CHR(13) & "Der Vorgang wird abgebrochen!" , 48, "Mail senden"
   Exit Sub
   end if
   
   'attN = "C:\Ordner\" & "Test.pdf" 'Anhang beifügen
   attA = ConvertToURL (attN)
   Empf = (sMail_Adr)
   betr= "Testmail" 'Betreffzeile
   anrT= "Sehr geehrte Damen und Herren"
   shell("/usr/bin/thunderbird ",1,"-compose to=" + empf +",attachment=" + attA + ",subject=" + betr  + ",body=" + anrT)
End Sub
Schöne Pfingsten.

Gruß harald

RobertG
* LO-Experte *
Beiträge: 2884
Registriert: Sa 19. Mai 2012, 17:37
Kontaktdaten:

Re: [gelöst] Email mit Datenübergabe aus einem Base-Formular

Beitrag von RobertG » So 27. Mai 2012, 11:52

Hallo Harald,

ich habe gerade einmal getestet:
Zum Start von thunderbird reicht auch

Code: Alles auswählen

shell("thunderbird",1,)
... also ganz ohne Pfadangabe.

Gruß

Robert
https://de.libreoffice.org/get-help/documentation/
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare

harald235

Re: [gelöst] Email mit Datenübergabe aus einem Base-Formular

Beitrag von harald235 » So 27. Mai 2012, 14:41

Hallo Robert,

danke für den erweiterten Tip. Für Windows 7 (64bit) habe ich die Syntax ebenfalls herausgefunden:

Code: Alles auswählen

' für Windows 7
	shell("C:\Program Files (x86)\Mozilla Thunderbird\thunderbird.exe",1,"-compose to=" + sEmpf +",attachment=" + attA + ",subject=" + sBetreff  + ",body=" + sAnred)
Hier verwirrt, daß im Win-Explorer als Pfad "C:\Programme (x86)\Mozilla ..." steht, aber in Base der wirkliche Pfad "C:\Program Files (x86)\Mozilla ..." eingesetzt werden muß, also nicht die deutsche Übersetzung.

Nochmals danke

Gruß harald

harald235

Re: [gelöst] Email mit Datenübergabe aus einem Base-Formular

Beitrag von harald235 » So 27. Mai 2012, 15:16

Hallo,

damit es runder wird, hier das Makro das jetzt sowohl in Windows (7), als auch in openSUSE 12.1 und LibreOffice 3.5.3 funktioniert.

Code: Alles auswählen

Sub SendMail
	Dim oDoc as Object
	DIM oForm as Object
	DIM oSubForm_Tel as Object
	DIM sEmpf as String
	DIM sBetreff as String
	DIM sAnred as String
	DIM sMail_Adr as String
	DIM attA as String
	DIM OS   

' Betriebsystem feststellen
	OS = GetGUIType()
'	if OS = 1 then MsgBox "Du arbeitest in Windows"
'	if OS = 2 then MsgBox "Du arbeitest mit' nem Mac"
'	if OS = 3 then MsgBox "Du arbeitest in Linux/Unix"
		
' auf Formulare zugreifen	
	oDoc = thisComponent
	oForm = oDoc.drawpage.forms.getbyindex(0)
	oSubForm_Tel = oForm.getByName("SubForm_Tel")

'auf Formularfeld in SubFormTel zugreifen	
	sMail_Adr = oSubForm_Tel.getByName("EmailAdress").Text
       
	If sMail_Adr = "" then
		msgbox "Keine Mailadresse vorhanden!" & CHR(13) & "Der Vorgang wird abgebrochen!" , 48, "Mail senden"
		Exit Sub
	End If
       
	'attN = "C:\Ordner\" & "Test.pdf" 'Anhang beifügen
	attA = ConvertToURL (attN)
	sEmpf = (sMail_Adr)
	sBetreff = "Testmail" 'Betreffzeile
	sAnred = "Sehr geehrte Damen und Herren"
	
	If OS = 3 then
	' für openSUSE 
		shell("thunderbird",1,"-compose to=" + sEmpf +",attachment=" + attA + ",subject=" + sBetreff  + ",body=" + sAnred)
	else
	' für Windows 7 (normalerweise OS = 1)
		shell("C:\Program Files (x86)\Mozilla Thunderbird\thunderbird.exe",1,"-compose to=" + sEmpf +",attachment=" + attA + ",subject=" + sBetreff  + ",body=" + sAnred)
	End If
End Sub
Gruß harald
Zuletzt geändert von harald235 am So 27. Mai 2012, 19:01, insgesamt 1-mal geändert.

harald235

Re: [gelöst] Email mit Datenübergabe aus einem Base-Formular

Beitrag von harald235 » So 27. Mai 2012, 18:59

ja, ja, der Fehlerteufel. Und das an Pfingsten.
harald235 hat geschrieben:If OS = 3 then
' für openSUSE
shell("thunderbird",1,"-compose to=" + sEmpf +",attachment=" + attA + ",subject=" + sBetreff + ",body=" + sAnred)
else ....
die erste Zeile oben muß heißen:

Code: Alles auswählen

If OS = 4 then
Unix = 3, Linux = 4

Gruß harald

RobertG
* LO-Experte *
Beiträge: 2884
Registriert: Sa 19. Mai 2012, 17:37
Kontaktdaten:

Re: [gelöst] Email mit Datenübergabe aus einem Base-Formular

Beitrag von RobertG » Mo 28. Mai 2012, 12:01

Hallo Harald,

habe gerade herausgefunden, wie der Kontakt auch über SystemShellExecute hergestellt werden kann:
oShell.execute("mailto:mensch@domain.de?subject=Test&body=Lauter Inhalt",,0)
Mit "mailto" wird automatisch das jeweilige Mailprogramm geöffnet. Die anderen zusätzlichen Einträge werden, wie bei Get-Formularen üblich, mit einem ? beginnend angehängt und durch ein & voneinander getrennt.
Auf diese Art und Weise kannst Du Dein Makro doch stark verkürzen. Die Pfadhinweise entfallen und wenn es einmal ein anderes Mailprogramm ist, so funktioniert das Ganze auch.

Gruß

Robert
https://de.libreoffice.org/get-help/documentation/
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare

harald235

Re: [gelöst] Email mit Datenübergabe aus einem Base-Formular

Beitrag von harald235 » Mo 28. Mai 2012, 14:01

Hallo Robert,

Chapeau!!! Und Danke.

Gruß harald

RobertG
* LO-Experte *
Beiträge: 2884
Registriert: Sa 19. Mai 2012, 17:37
Kontaktdaten:

Re: [gelöst] Email mit Datenübergabe aus einem Base-Formular

Beitrag von RobertG » Mo 28. Mai 2012, 18:39

Hallo Harald,

hast Du auch probiert, ob es mit 'attachment' klappt? ich habe gerade ein Formular in Base gebaut, aber die Übergabe bekomme ich mit dem Verfahren nicht hin. Das liegt sicher an der Definition von mailto: ... Da sind nur cc, bcc, subject und body Standard. Na, muss eben für den Anhang noch einmal im anderen Programm geklickt werden. Aber zumindest lässt sich so aus einem Adressprogramm problemlos das Mailprogramm mit der Mailadresse starten.

Gruß

Robert
https://de.libreoffice.org/get-help/documentation/
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare


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