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

Senden PDF an E-Mail

Alles zur Programmierung im LibreOffice.
Antworten
nostromo
Beiträge: 44
Registriert: So 20. Aug 2017, 12:52
Wohnort: Osnabrück

Senden PDF an E-Mail

Beitrag von nostromo » Fr 27. Jun 2025, 14:21

Hallo!

ich habe mit dem Makro-Rekorder nachfolgendes Makro erhalten....

Code: Alles auswählen

sub Main

dim document   as object
dim dispatcher as object

document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

dispatcher.executeDispatch(document, ".uno:SendMailDocAsPDF", "", 0, Array())

end sub
Daher die Funktion unter DATEI | SENDEN | PDF als E-Mail..

Das funktioniert soweit auch gut, ich würde nur gerne eine Empfänger E-Mail in dem Makro mit übergeben.
Kann mir das jemand sagen oder einen Tipp geben wo ich das finden könnte!?

Danke
cu
nostromo

mikele
* LO-Experte *
Beiträge: 1930
Registriert: Mo 1. Aug 2011, 20:51

Re: Senden PDF an E-Mail

Beitrag von mikele » Mo 30. Jun 2025, 20:55

Hallo,
teste mal

Code: Alles auswählen

sub Main

dim document   as object
dim dispatcher as object
dim props(0) As New com.sun.star.beans.PropertyValue

document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
props(0).Name="Recipient"
props(0).Value="deine_adresse@mailer.org"

dispatcher.executeDispatch(document, ".uno:SendMailDocAsPDF", "", 0, props)

end sub
Gruß,
mikele

nostromo
Beiträge: 44
Registriert: So 20. Aug 2017, 12:52
Wohnort: Osnabrück

Re: Senden PDF an E-Mail

Beitrag von nostromo » Mo 7. Jul 2025, 09:58

mikele hat geschrieben:
Mo 30. Jun 2025, 20:55
Hallo,
teste mal
Hi mikele,

sorry, dass ich erst jetzt reagiere - hatte übersehen, dass du geantwortet hast.
Der Code macht genau das, was ich grundlegend möchte - danke dafür.

Was mir bei der Programmierung u.a. von LO immer schwer fällt ist das Wissen um die Möglichkeiten der API.
Mir fehlt irgendwie das Verständis und der passende Zugriff auf die notwendigen Infos.

Mich würde auch die Möglichkeit interessieren andere Dinge an das E-Mail Programm zu übergeben.

- Der Betreff wird von LO automatisch aus dem Dateinamen gebildet - wie könnte das z.B. abweichend erfolgen?
- Ein 2. E-Mail Empfänger in CC bzw. BCC wäre auch toll...
- Weiterhin würde ich gerne den Inhalt der E-Mail, einen Textblock übergeben, der den Anhang genauer beschriebt.


Hintergrundinfo:

Ich versuche mit LO-Calc einen Leistungsnachweis (Zeit & Materialerfassung) für unsere Techniker zu realisieren.
Dieser soll dann als E-Mail an den Kunden geschickt werden.

Mir ist klar, dass mir hier niemand meinen Job abnehmen kann. Meine Tätigkeit ist jedoch auch ein Mittel die Übermacht von Produkten aus Redmond in Unternehmen zu reduzieren. Dies gelingt mir mit den derzeitigen Anforderungen und weiteren positiv abgeschlossenen Projekten sehr gut.
Unsere GF fragt nicht mal mehr ob das nicht besser mit Excel & Co. gehen würde...
Die Frage ist eher wie Lange brauchst du um das Problem mit LO zu lösen!?

In diesem Sinn Danke für die Unterstützung meinerseits werden ich gleich eine Spende für dieses Forum machen ....
cu
nostromo

mikele
* LO-Experte *
Beiträge: 1930
Registriert: Mo 1. Aug 2011, 20:51

Re: Senden PDF an E-Mail

Beitrag von mikele » Mo 7. Jul 2025, 22:24

Hallo,
die API pur begreife ich bis heute nicht wirklich (um die Eigenschaften und Methoden eines Objektes herauszubekommen muss man ganz schön wühlen).
Für dein Problem würde ich zweischrittig vorgehen:
1. Eine pdf erstellen und abspeichern.
2. Diese pdf versenden.
Hier hatte wir schon mal etwas ähnliches.
Zum Vorschlag:

Code: Alles auswählen

Sub mail_versand

	'Zugriff auf das Dokument
	oDoc=ThisComponent
	'Ersetzt .odt durch .pdf
	sDocURL = oDoc.getURL()
	sPDFURL = Left$(sDocURL,Len(sDocURL) - 4) + ".pdf"
	'Speichert als PDF im selben Verzeichnis
	Dim args(0) As New com.sun.star.beans.PropertyValue
	args(0).Name = "FilterName"
	'für den Fall, dass es eine Calc-Datei ist: "calc_pdf_Export"
	args(0).Value = "writer_pdf_Export" 
	oDoc.storeToURL(sPDFURL, args())
	
	'Mailversand
	'Sender als String
	sFrom="vvv.vvv@zzz.com"
	'Empänger als String
	sTo="xxx.yyy@zzz.de"
	'Betreff als String
	sSubject="test"
	'CC als Array
	sCC=array("aaa.bbbb@zzz.de", "ccc.ddd@zzz.de")
	'BCC als Array
	sBcc=array("eee.fff@zzz.de", "ggg.hhh@zzz.de")
	'Anhang als Array von vollständigen Dateinamen mit Pfad im URL-Format
	sAttach=array(converttourl(sPDFURL))
	'Nachricht als String
	sBody="hallo"
	'Mail generieren und senden
	MailAgent = CreateUnoService("com.sun.star.system.SimpleCommandMail")
	MailClient = MailAgent.querySimpleMailClient()
	MailMessage=MailClient.createSimpleMailMessage()
	MailMessage.setOriginator(sFrom)
	MailMessage.setRecipient(sTo)
	MailMessage.setSubject(sSubject)
	MailMessage.setAttachement(sAttach)
	Mailmessage.Body=sBody
	mailmessage.setBccRecipient(sBcc)
	mailmessage.setCcRecipient(sBcc)
	MailClient.sendSimpleMailMessage(MailMessage, 0)




End Sub
Gruß,
mikele

nostromo
Beiträge: 44
Registriert: So 20. Aug 2017, 12:52
Wohnort: Osnabrück

Re: Senden PDF an E-Mail

Beitrag von nostromo » Di 8. Jul 2025, 12:31

mikele hat geschrieben:
Mo 7. Jul 2025, 22:24
Hallo,
die API pur begreife ich bis heute nicht wirklich (um die Eigenschaften und Methoden eines Objektes herauszubekommen muss man ganz schön wühlen).
Für dein Problem würde ich zweischrittig vorgehen:
1. Eine pdf erstellen und abspeichern.
2. Diese pdf versenden.
Hier hatte wir schon mal etwas ähnliches.
...
Hi mikele,

das Makro ist noch viel besser - ich werde es noch etwas anpassen müssen,
komme jetzt mit deiner Hilfe noch viel weiter!

Mit dem 1. Makro hatte ich zumindest mit normalen E-Mail-Clients keine Probleme.
Ich hatte dann aber festgestellt, dass es mit der "neuen" Outlook-Version nicht funktionierte.

Mal schauen was mit dem 2. Makro passiert - ich berichte dann...

Danke!
cu
nostromo

nostromo
Beiträge: 44
Registriert: So 20. Aug 2017, 12:52
Wohnort: Osnabrück

Re: Senden PDF an E-Mail

Beitrag von nostromo » Mo 14. Jul 2025, 17:21

mikele hat geschrieben:
Mo 7. Jul 2025, 22:24
Hallo,
die API pur begreife ich bis heute nicht wirklich (um die Eigenschaften und Methoden eines Objektes herauszubekommen muss man ganz schön wühlen).
Für dein Problem würde ich zweischrittig vorgehen:
1. Eine pdf erstellen und abspeichern.
2. Diese pdf versenden.
Hier hatte wir schon mal etwas ähnliches.
Zum Vorschlag:

Code: Alles auswählen

Sub mail_versand
'..

End Sub
Hi mikele,

ich habe das Makro soweit integriert, dass es genau das macht, was es machen soll.
Es funktioniert unter Linux KDE/plasma, Fedora 1A!

Leider funktioniert der Aufruf des E-Mail Client unter Windows nicht.
Unter Linux wird sowohl KMail als auch Thunderbird, je nachdem welche App als Standard eingestellt ist, aufgerufen.

Es kommt jedoch unter Windows 10 / 11 zu dieser Meldung:
LO-Makro-Fehler-Windows.png
LO-Makro-Fehler-Windows.png (13.59 KiB) 26 mal betrachtet

... natürlich habe ich die Separatoren entsprechend behandelt. Der String der URL ist immer richtig!
Das PDF wird erzeugt und liegt in dem Verzeichnis.

Es gibt wohl grundlegende Probleme mit dem MailTo unter Windows...
.. somit wohl nicht unbedingt mit dem Makro direkt!?

Getestet habe ich das auf 3 verschiedenen PC mit Windows 10 pro und Windows 11 pro...
Auch ist das Java OpenJDK Runtime von MS ist installiert und aktiviert in LO.

Trotz versuchsweiser Installation von Thunderbird unter Windows, Outlook sollte es eigentlich sein, und der entsprechenden Konfiguration als Standard-EMail-Client kommt es zu dem Fehler bei Ausführung der Methode.

Den E-Mail-Client mit einem PowerShell-Skript aufzurufen führt auch nur zu Problemen mit den Sicherheitseinstellungen.
Python-Skript ebenso ...

Hinweis: Version LO: 24.2.3.2

Hast du / jemand ggf. eine Idee?
cu
nostromo

mikele
* LO-Experte *
Beiträge: 1930
Registriert: Mo 1. Aug 2011, 20:51

Re: Senden PDF an E-Mail

Beitrag von mikele » Di 15. Jul 2025, 11:23

Hallo,
unter Windows muss man (wohl) den anderen Service nutzen:

Code: Alles auswählen

MailAgent = CreateUnoService("com.sun.star.system.SimpleSystemMail")
Gruß,
mikele


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