Seite 1 von 1

Senden PDF an E-Mail

Verfasst: Fr 27. Jun 2025, 14:21
von nostromo
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

Re: Senden PDF an E-Mail

Verfasst: Mo 30. Jun 2025, 20:55
von mikele
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

Re: Senden PDF an E-Mail

Verfasst: Mo 7. Jul 2025, 09:58
von nostromo
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 ....

Re: Senden PDF an E-Mail

Verfasst: Mo 7. Jul 2025, 22:24
von mikele
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

Re: Senden PDF an E-Mail

Verfasst: Di 8. Jul 2025, 12:31
von nostromo
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!