🙏 Bitte helfen Sie uns das LibreOffice Forum zu erhalten. 🙏
Ihre Spende wird für die Deckung der laufenden Kosten sowie den Erhalt und Ausbau 🌱 des LibreOffice Forums verwendet.

🍀 Wir hoffen auf Ihre Unterstützung - vielen Dank!🍀

❤️ 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: 43
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: 1927
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: 43
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: 1927
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: 43
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


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