Mit Makro Thunderbird email versenden - mehrerer Anhänge

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

FraWie
**
Beiträge: 46
Registriert: So, 12.04.2020 18:37

Mit Makro Thunderbird email versenden - mehrerer Anhänge

Beitrag von FraWie »

Hallo Ihr wunderbaren Helfer!

Leider finde ich nirgendwo einen Hinweis auf diese Frage:

Ich möchte aus einem Calc-Makro heraus eine Thunderbird email generieren
und mehrere Dateien anhängen.

Wie lautet die richtige Formulierung, um mehrere Dateien anzuhängen?

Irgendwo habe ich das hier gefunden:

thunderbird -compose"to='a@a.com,b@b.com',subject='Test',attachment='/tmp/File1,/tmp/File2'"

Und hatte daraus geschlossen, dass man einfach zwei Pfade mit einem Komma trennt und übergibt.
Auch Semikolon, mit oder ohne Leerzeichen usw. usf., alles habe ich probiert.

Eine einzelne Datei kann ich mit folgnder Sub ohne Probleme senden, beide zusammen leider nicht:

Sub Email_Mit_Mehreren_Anhaengen_Senden

Uebergabe_MailSubject = "Anbei die Anhänge "
Uebergabe_MailMessage = "Hallo," + "<br />" + "<br />" & "anbei die Anhänge wie gewünscht."
Uebergabe_MailAddress = "test@testadresse.de"

Datei_Name1 = "file:///C:/Users/FW/PDFs/" & "INVOICE_1.PDF"
Datei_Name2 = "file:///C:/Users/FW/PDFs/" & "INVOICE_2.PDF"

Anhang = Datei_Name1 & "," & Datei_Name2

MailAgent = CreateUnoService("com.sun.star.system.SimpleSystemMail")
MailClient = MailAgent.querySimpleMailClient()
MailMessage = MailClient.createSimpleMailMessage()

MailMessage.setRecipient(Uebergabe_MailAddress)
MailMessage.setSubject(Uebergabe_MailSubject)
MailMessage.setAttachement(Array(Anhang))
MailMessage.Body = Uebergabe_MailMessage

MailClient.sendSimpleMailMessage(MailMessage, 0)

End Sub

Wo liegt mein (Denk-)Fehler ?

Wald vor lauter Bäumen usw...
:lol:
Vielen Dank vorab!!!
Stephan
********
Beiträge: 12369
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: Mit Makro Thunderbird email versenden - mehrerer Anhänge

Beitrag von Stephan »

Bei mir funktioniert:

thunderbird -compose "to='a@a.com,b@b.com',subject='Test',attachment='D:\test1.txt,D:\test2.txt'"
Wo liegt mein (Denk-)Fehler ?
Das Du dem Array einen einzelnen String übergibst, richtig wäre z.B.:

Code: Alles auswählen

'...
MailMessage.setAttachement(Array(Datei_Name1, Datei_Name2))
'...

Gruß
Stephan
Hiker
******
Beiträge: 590
Registriert: Mo, 08.09.2014 21:34
Wohnort: Berlin

Re: Mit Makro Thunderbird email versenden - mehrerer Anhänge

Beitrag von Hiker »

Hallo,

im folgenden die am Thread-Anfang viewtopic.php?f=2&t=74682 im Calc-Forum von mir genannte Variante via Shell, die zu Deiner zitierten Syntax gehört.

Code: Alles auswählen

   shell("C:\Program Files (x86)\Mozilla Thunderbird\thunderbird.exe",1,"-compose to=" + empf +",attachment=" + attA + ",subject=" + betr  + ",body=" + anrT)
Du müsstest also in attA dann mehrere durch Komma getrennte Dateien angeben,
wobei ich den Dateinamen durch ConvertToUrl schicke:

Code: Alles auswählen

attA = ConvertToURL (attN)
vgl: https://www.libreoffice-forum.de/viewtopic.php?t=9857

Die korrekte Schreibweise in Deinem Macro für die Angabe Array() hat Stephan ja schon angegeben.

mfg, Jörn
Libre Office 6.3.1 (Win 10 Pro) / Libre Office 6.0.7 (Win8.1 Pro, Win 7 Pro) / AOO (Win 7)
FraWie
**
Beiträge: 46
Registriert: So, 12.04.2020 18:37

Re: Mit Makro Thunderbird email versenden - mehrerer Anhänge

Beitrag von FraWie »

Stephan hat geschrieben: So, 26.04.2020 19:43 Bei mir funktioniert:

thunderbird -compose "to='a@a.com,b@b.com',subject='Test',attachment='D:\test1.txt,D:\test2.txt'"
Wo liegt mein (Denk-)Fehler ?
Das Du dem Array einen einzelnen String übergibst, richtig wäre z.B.:

Code: Alles auswählen

'...
MailMessage.setAttachement(Array(Datei_Name1, Datei_Name2))
'...

Gruß
Stephan

Danke für die Antwort!

Ja, so funktioniert es.
Aber nur für konkrete Anhänge, die in der Klammer per Namen einzeln benannt werden.

Vielleicht habe ich mich nicht richtig ausgedrückt:
Kann man auch eine unbekannte Anzahl von Anhängen übergeben?

Also es gäbe z. B. ein bis zu zehn (hundert, tausend, "n") Dateien, die in der Varaiblen
Dateiname(0) - Dateiname(10)...
abgespeichert wären.

Wie könnte ich diese unbekannte Anzahl von Dateien dann übergeben?

Wie würde man dann dieses Array erzeugen?
Zuletzt geändert von FraWie am Mo, 27.04.2020 10:52, insgesamt 1-mal geändert.
FraWie
**
Beiträge: 46
Registriert: So, 12.04.2020 18:37

Re: Mit Makro Thunderbird email versenden - mehrerer Anhänge

Beitrag von FraWie »

Hiker hat geschrieben: Mo, 27.04.2020 00:18 Hallo,

im folgenden die am Thread-Anfang viewtopic.php?f=2&t=74682 im Calc-Forum von mir genannte Variante via Shell, die zu Deiner zitierten Syntax gehört.

Code: Alles auswählen

   shell("C:\Program Files (x86)\Mozilla Thunderbird\thunderbird.exe",1,"-compose to=" + empf +",attachment=" + attA + ",subject=" + betr  + ",body=" + anrT)
Du müsstest also in attA dann mehrere durch Komma getrennte Dateien angeben,
wobei ich den Dateinamen durch ConvertToUrl schicke:

Code: Alles auswählen

attA = ConvertToURL (attN)
vgl: https://www.libreoffice-forum.de/viewtopic.php?t=9857

Die korrekte Schreibweise in Deinem Macro für die Angabe Array() hat Stephan ja schon angegeben.

mfg, Jörn
Danke dafür!!!

Hatte mich jetzt auch auf die shell-Lösung gestürzt und mein Problem mit mehreren
Dateien-Anhängen lösen können.
Man muss hier noch ein wenig auf die Hochkommas ( " ' " ) achten.
Ich werde die fertige Lösung noch hier reinschreiben, sobald alles fertig ist.

Aber auch gleich hat sich bei der Shell-Lösung ein neues Problem aufgetan:

Ich bekomme im "body-text" Keine Zeilenumbrüche hin.

Während beim Mailclient das recht einfach geht...:
MailMessage.Body = "Hallo zusammen," & "<br />" & "<br />" & "hier kommt die Mail."

...funktioniert es bei der Shell-Version nicht.
Der Text wird bei der html Variante ab dem "<br />" abgeschnitten.
Auch mit chr(13) funktioniert es nicht...

Irgend eine Idee, wie man mehrzeiligen Mail-Text mit übergeben kann?
FraWie
**
Beiträge: 46
Registriert: So, 12.04.2020 18:37

Re: Mit Makro Thunderbird email versenden - mehrerer Anhänge

Beitrag von FraWie »

So, wieder ein Vormittag rum, aber ich habe die Lösung für das
neue zweite Teil-Problem...

Zeilenumrüche kann man im bodytext wie folgt realisieren.

Uebergabe_MailMessage = "Hallo zusammen" & "%2C%0D%0A" & "hier steht die zweite Zeile"

Wichtig: Auch ein Komma darf nicht mit übergeben werden, dafür steht das "%2C" ...
Ich werde später nochmal die komplette Lösung präsentieren...
Stephan
********
Beiträge: 12369
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: Mit Makro Thunderbird email versenden - mehrerer Anhänge

Beitrag von Stephan »

Aber nur für konkrete Anhänge, die in der Klammer per Namen einzeln benannt werden.

Vielleicht habe ich mich nicht richtig ausgedrückt:
Kann man auch eine unbekannte Anzahl von Anhängen übergeben?

Also es gäbe z. B. ein bis zu zehn (hundert, tausend, "n") Dateien, die in der Varaiblen
Dateiname(0) - Dateiname(10)...
abgespeichert wären.

Wie könnte ich diese unbekannte Anzahl von Dateien dann übergeben?

Wie würde man dann dieses Array erzeugen?
Das ist jetzt eine Scherzfrage? WEil das Folgende ist ja der absolute Standardfall, dem gegenüber ist Array() schon etwas 'schwieriger'.

Code: Alles auswählen

Dim Anhang(9) As String

For i = 0 To 9
	Anhang(i) = "D:\Datei"& i & ".txt"  
Next i

MailMessage.setAttachement(Anhang())
Gruß
Stephan
FraWie
**
Beiträge: 46
Registriert: So, 12.04.2020 18:37

Re: Mit Makro Thunderbird email versenden - mehrerer Anhänge

Beitrag von FraWie »

Hey Stephan
Das ist jetzt eine Scherzfrage? WEil das Folgende ist ja der absolute Standardfall, dem gegenüber ist Array() schon etwas 'schwieriger'.
Nein, ich würde es sonst drunter schreiben... ;-)

So einfach ist das nicht.

Ich hatte das so auch durchaus schon probiert, aber es warf einen Fehler bei mir aus.

Habe es jetzt nochmal durchprobiert und das Problem daran besteht darin,
dass MailMessage.setAttachement(Anhang()) keine leeren Inhalte akzeptiert.

Angenommen man dimensioniert Anhang(10) und hat aber nur drei Werte mit Dateien gefüllt
- somit Anhang(0) bis Anhang(2) gefüllt, der Rest Anhang(3) bis Anhang(10) ist leer -
dann bekommt man einen Fehler:
"Type: com.sun.star.lang.IllegalArgumentException
Message: Invalid attachment file URL."

Lösung DIESES Problems:

Man dimensioniert das Array wirklich nur so groß, wie es auch Dateien anzuhängen gibt...

Okay, wieder ein Problem gelöst.

Ich denke, am Ende werde ich beide Lösungen präsentieren -
für die "Shell-Variante" und den MailClient...
Antworten