Seite 1 von 3
[gelöst] Email mit Datenübergabe aus einem Base-Formular
Verfasst: So 27. Mai 2012, 08:46
von harald235
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.
Re: Email mit Datenübergabe aus einem Base-Formular
Verfasst: So 27. Mai 2012, 09:59
von RobertG
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
Re: Email mit Datenübergabe aus einem Base-Formular
Verfasst: So 27. Mai 2012, 10:18
von harald235
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
Re: [gelöst] Email mit Datenübergabe aus einem Base-Formular
Verfasst: So 27. Mai 2012, 11:52
von RobertG
Hallo Harald,
ich habe gerade einmal getestet:
Zum Start von thunderbird reicht auch
... also ganz ohne Pfadangabe.
Gruß
Robert
Re: [gelöst] Email mit Datenübergabe aus einem Base-Formular
Verfasst: So 27. Mai 2012, 14:41
von harald235
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
Re: [gelöst] Email mit Datenübergabe aus einem Base-Formular
Verfasst: So 27. Mai 2012, 15:16
von harald235
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
Re: [gelöst] Email mit Datenübergabe aus einem Base-Formular
Verfasst: So 27. Mai 2012, 18:59
von harald235
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:
Unix = 3, Linux = 4
Gruß harald
Re: [gelöst] Email mit Datenübergabe aus einem Base-Formular
Verfasst: Mo 28. Mai 2012, 12:01
von RobertG
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
Re: [gelöst] Email mit Datenübergabe aus einem Base-Formular
Verfasst: Mo 28. Mai 2012, 14:01
von harald235
Hallo Robert,
Chapeau!!! Und Danke.
Gruß harald
Re: [gelöst] Email mit Datenübergabe aus einem Base-Formular
Verfasst: Mo 28. Mai 2012, 18:39
von RobertG
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