Mit Makro Thunderbird email versenden - mehrerer Anhänge

Antwort erstellen


BBCode ist eingeschaltet
[img] ist ausgeschaltet
[url] ist eingeschaltet
Smileys sind ausgeschaltet

Die letzten Beiträge des Themas
   

Ansicht erweitern Die letzten Beiträge des Themas: Mit Makro Thunderbird email versenden - mehrerer Anhänge

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

von FraWie » Mo, 27.04.2020 15:17

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

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

von Stephan » Mo, 27.04.2020 14:04

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

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

von FraWie » Mo, 27.04.2020 13:01

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

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

von FraWie » Mo, 27.04.2020 10:47

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?

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

von FraWie » Mo, 27.04.2020 10:35

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?

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

von Hiker » 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

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

von Stephan » 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

Mit Makro Thunderbird email versenden - mehrerer Anhänge

von FraWie » So, 26.04.2020 17:55

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!!!

Nach oben