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

Email versenden mit Makro

Alles zur Programmierung im LibreOffice.
xundeenergie
Beiträge: 32
Registriert: Do 20. Jun 2013, 17:46

Email versenden mit Makro

Beitrag von xundeenergie » Do 3. Apr 2014, 13:42

Hi!

Ich möchte gerne aus einem Makro heraus ein Email versenden. Das soll sowohl unter Linux wie auch Windows funktionieren (und am Mac auch...)

Dazu habe ich folgenden Code gefunden:

Code: Alles auswählen

        sPMUA = "/usr/bin/icedove"
        sEmail = "empfaenger@example.example"
        sSubject = "Ich bin ein Betreff"
        sAttachment="file:///path/to/att1,file:///path/to/att2"
        sBody = "Hallo ich bin der Body"

        sMessage = sPMUA & _
		" -compose to=" & sEmail & _
		",bcc=user@example.example" & _
		",subject='" & sSubject & "'" & _
		",attachment='"& sAttachment & "'" & _
		",preselectid=id10" & _
		",body='" & sBody & "'" 
	
		Shell(sMessage)
Das Funktioniert auch schön. Mit icedove/thunderbird wird ein neues Composer-Fenster geöffnet, Subject, Body, die Empfänger (to und bcc), und die Absender-ID und die Attachments eingetragen und ausgewählt.

Dann hab ich das hier gefunden

https://issues.apache.org/ooo/show_bug.cgi?id=121579
Und das hier

Code: Alles auswählen

MailAgent = CreateUnoService("com.sun.star.system.SimpleCommandMail")
MailClient = MailAgent.querySimpleMailClient()
		MailMessage=MailClient.createSimpleMailMessage()
		MailMessage.setRecipient(sTo)
		MailMessage.setSubject(sSubject)
		MailMessage.setAttachement(array(sPDFURL))
MailClient.sendSimpleMailMessage(MailMessage, 0)
Ich kann mit

Code: Alles auswählen

MailMessage.setBccRecipients(sBcc)

aber keinen BCC-Empfänger setzen, und mit setBody auch keinen Body. Da kommt die Fehlermeldung, dass die Variable nicht belegt wäre... (sBcc habe ich aber definiert und belegt!!)

Ist meine Lösung schon die "beste"? Ich bin mir nicht sicher, denn ich tät schon irgendwie gerne auf den Shell-Befehl verzichten und die Interna von LO nutzen.

Wie mache ich es richtig?
LibreOffice
Version: 4.1.4.2 Build-ID: 410m0(Build:2) auf Debian Wheezy mit Backports

scientific
Beiträge: 131
Registriert: Do 25. Apr 2013, 17:27

Re: Email versenden mit Makro

Beitrag von scientific » So 7. Feb 2016, 18:17

Knappe 2 Jahre später bin ich wieder beim selben Problem...

Diesmal mit LO 5.0.5.1 und icedove 38.5.0 nur werden mit SimpleCommandMail keine Attachments akzeptiert. Ich kann Empfänger und Subject eintragen, das Mail wird erstellt. Sobald ich aber ein Attachment als Array einfüge, ist sowohl subject als auch Empfänger leer, sowie auch Attachments sind nicht im Mail... Und das aber nur, wenn Leerzeichen oder Umlaute im Pfad sind.

Das Setzen von BCC und CC aber auch des Bodys funktioniert. (Sofern eben kein Attachment mit Umlaut/Leerzeichen im Pfad angehängt werden soll).

gogo
* LO-Experte *
Beiträge: 1081
Registriert: Sa 5. Feb 2011, 19:07

Re: Email versenden mit Makro

Beitrag von gogo » So 7. Feb 2016, 19:32

evtl. geht's, wenn du statt dem Pfad die URL nimmst.
Ansonsten: Anhänge ohne Leerzeichen in den /tmp/ oder C:\Temp\ kopieren und dann anhängen.

mit Icedove/Thunderbird sollte das funktionieren: (siehe: https://www.thunderbird-mail.de/lexicon ... underbird/)

Code: Alles auswählen

thunderbird -compose"to='a@a.com,b@b.com',subject='Test',attachment='/tmp/File1,/tmp/File2'" 
... nur außen doppelte Hochkommas, innen nur einfache, keine Leerzeichen um die trennenden Beistriche, keine Semikolons verwenden...
g
2008 LucidL./MaverickM./WinXP LibreOffice 3.3.2 > 02/13 LinuxMint13/Xubuntu > 09/13 Debian Wheezy+LO3.5.4.2 > 01/15 Debian Jessie KDE+LO4.3.3.2/Mint17 openbox auf USB+LO4.2.8.2 > 03/16 ArchLin & LO5.1+ff > 02/18 Kubuntu

scientific
Beiträge: 131
Registriert: Do 25. Apr 2013, 17:27

Re: Email versenden mit Makro

Beitrag von scientific » So 7. Feb 2016, 19:47

Hi Gogo!

Danke für Deine Antwort.
Wären es nur die Leerzeichen, wär es ja kein Problem, das über das Temp-Verzeichnis zu lösen. Da aber auch Umlaute Probleme bereiten, ist das ganze nicht so einfach. Ich müsste dann nämlich auch Dokumente mit geändertem Filenamen versenden.

Und die Lösung mit dem Aufruf von Thunderbird explizit über die Shell ist auch nicht optimal, da der Mailversand sowohl mit Thunderbird, Icedove (die Debian-Version von Thunderbird), aber auch Outlook in verschiedenen Versionen stattfinden soll.

Ich hab schon einmal für ein Projekt eine Lösung mit Thunderbird explizit gemacht, da man bei Thunderbird auch verschiedene Identitäten als Absender auswählen kann, was wiederum Outlook nicht kann.
Dieses Feature ist hier nicht notwendig. Aber Leerzeichen und Umlaute in Filenamen/pfaden sind ja jetzt nicht so außergewöhntlich. SimpleCommandMail verlangt außerdem eh die Codierte Url-Darstellung... auch so werden die Attachements nicht korrekt behandelt.

Ich nehm mal an, das ist ein Bug.

lg scientific

swolf
* LO-Experte *
Beiträge: 1143
Registriert: Di 14. Feb 2012, 16:56

Re: Email versenden mit Makro

Beitrag von swolf » So 7. Feb 2016, 20:20

Hallo,
Aber Leerzeichen und Umlaute in Filenamen/pfaden sind ja jetzt nicht so außergewöhntlich.
Nein, dass Menschen Fehler machen, ist nicht außergewöhlich. Bekannte Probleme muss man aber nicht provozieren.
Dass Sonderzeichen, Umlaute, Leerzeichen im Dateinamen/Verzeichnisnamen Probleme machen, kommt oft vor.
http://www.ianus-fdz.de/it-empfehlungen/dateibenennung

http://wordpress.z-dbackup.de/blog/2014 ... hnisnamen/
http://www.macvillage.de/blog/2009/11/2 ... s-problem/
https://de.wikipedia.org/wiki/Dateiname

scientific
Beiträge: 131
Registriert: Do 25. Apr 2013, 17:27

Re: Email versenden mit Makro

Beitrag von scientific » So 7. Feb 2016, 20:33

swolf hat geschrieben:Hallo,
Aber Leerzeichen und Umlaute in Filenamen/pfaden sind ja jetzt nicht so außergewöhntlich.
Nein, dass Menschen Fehler machen, ist nicht außergewöhlich. Bekannte Probleme muss man aber nicht provozieren.
Dass Sonderzeichen, Umlaute, Leerzeichen im Dateinamen/Verzeichnisnamen Probleme machen, kommt oft vor.
http://www.ianus-fdz.de/it-empfehlungen/dateibenennung

http://wordpress.z-dbackup.de/blog/2014 ... hnisnamen/
http://www.macvillage.de/blog/2009/11/2 ... s-problem/
https://de.wikipedia.org/wiki/Dateiname
Ich weiß nicht, ob ich es als Mensch mit Deutscher Muttersprache als Fehler qualifizieren soll, dass ich den deutschen Zeichensatz vollumfänglich nutze. Mir persönlich ist schon bewusst, dass ASCII-Zeichen am wenigsten Probleme bereiten. Aber ich hege den Anspruch, dass sich Programmierer den sprachlichen Gegebenheiten anzupassen haben, und nicht die Sprache den Programmierergewohnheiten.

Abgesehen davon ist das Problem der Umlaute schon vielfach gelöst. Auch innerhalb von Libreoffice funktioniert das bereits. Wozu gibt es die URL-Codierung, wenn sie hier im konkreten Fall nicht funktioniert?

Ja ich weiß, dass LO FOSS ist. Und ich kann nicht erwarten, dass... aber ich kann mir wünschen, dass beim Versand eines Emails der Pfad und Dateiname genauso behandelt wird, wie beim Speichern eines Dokumentes...

lg scientific

swolf
* LO-Experte *
Beiträge: 1143
Registriert: Di 14. Feb 2012, 16:56

Re: Email versenden mit Makro

Beitrag von swolf » So 7. Feb 2016, 23:55

Ja ich weiß, dass LO FOSS ist. Und ich kann nicht erwarten, dass... aber ich kann mir wünschen,
FOSS oder nicht, ist für für das Thema 'Dateinamen' unerheblich, LO ist nun mal kein Betriebssystem.

Ich habe dir noch Links raus gesucht,
aus denen, hoffe ich, deutlich wird, dass es eine Angelegenheit der Betriebssysteme ist,
hier Windows:
https://www.fh-brandenburg.de/dateinamenuntermic.3.html
hier Ubuntu - "Dateinamen":
https://wiki.ubuntuusers.de/Unterschiede_zu_Windows/
und Mac:
https://support.apple.com/de-de/HT202808

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

Re: Email versenden mit Makro

Beitrag von mikele » Mo 8. Feb 2016, 00:03

Hallo,

grundsätzlich funktioniert schon alles, was du möchtest.
Die URLs müssen halt Rfc1738-conform sein. Darum kümmert sich die Funktion ConvertToUrl().
Body wird direkt als Attribut angesprochen und die BCC (auch CC) werden in ein Array gepackt.
So lies sich thunderbird zum Start bei mir "überreden" (nun hab' ich auch gelernt, wie ich per Makro 'ne Mail verschicke 8-) )

Code: Alles auswählen

	sTo="xxx.yyy@zzz.de"
	sSubject="test"
	sBcc=array("aaa.bbbbw@zzz.de", "ccc.ddd@zzz.de")
	sPDFURL1="/home/user/Dokumente/Dokumente user/spaß/lösung für alles.pdf"
	sAttach=array(converttourl(sPDFURL))
	sBody="hallo, hallo"
	MailAgent = CreateUnoService("com.sun.star.system.SimpleCommandMail")
	MailClient = MailAgent.querySimpleMailClient()
	MailMessage=MailClient.createSimpleMailMessage()
	MailMessage.setRecipient(sTo)
	MailMessage.setSubject(sSubject)
	MailMessage.setAttachement(sAttach)
	Mailmessage.body=sBody
	mailmessage.setbccrecipient(sBcc)
	MailClient.sendSimpleMailMessage(MailMessage, 0)
Gruß,
mikele

scientific
Beiträge: 131
Registriert: Do 25. Apr 2013, 17:27

Re: Email versenden mit Makro

Beitrag von scientific » Mo 8. Feb 2016, 23:27

mikele hat geschrieben:Hallo,

grundsätzlich funktioniert schon alles, was du möchtest.
Die URLs müssen halt Rfc1738-conform sein. Darum kümmert sich die Funktion ConvertToUrl().
Body wird direkt als Attribut angesprochen und die BCC (auch CC) werden in ein Array gepackt.
So lies sich thunderbird zum Start bei mir "überreden" (nun hab' ich auch gelernt, wie ich per Makro 'ne Mail verschicke 8-) )

Code: Alles auswählen

	sTo="xxx.yyy@zzz.de"
	sSubject="test"
	sBcc=array("aaa.bbbbw@zzz.de", "ccc.ddd@zzz.de")
	sPDFURL1="/home/user/Dokumente/Dokumente user/spaß/lösung für alles.pdf"
	sAttach=array(converttourl(sPDFURL))
	sBody="hallo, hallo"
	MailAgent = CreateUnoService("com.sun.star.system.SimpleCommandMail")
	MailClient = MailAgent.querySimpleMailClient()
	MailMessage=MailClient.createSimpleMailMessage()
	MailMessage.setRecipient(sTo)
	MailMessage.setSubject(sSubject)
	MailMessage.setAttachement(sAttach)
	Mailmessage.body=sBody
	mailmessage.setbccrecipient(sBcc)
	MailClient.sendSimpleMailMessage(MailMessage, 0)
Nun... unter Windows fügt dieser Service die Dokumente mit Umlauten und Leerzeichen im Pfad zu einem Outlook-Mail hinzu.
Unter Linux funktioniert es mit Icedove nicht. Die selbe Funktion.
Ich kann leider Thunderbird auf Windows nicht testen.

Die Umwandlung "convertToUrl" hab ich natürlich in mein Skript eingebaut. Ich frag mich momentan, ob es an Linux oder Thunderbird/Icedove liegt. Oder ob LO unter Linux anders funktioniert als unter Windows.

Unter welchem OS hast du das Skript getestet mikele?

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

Re: Email versenden mit Makro

Beitrag von mikele » Di 9. Feb 2016, 15:50

Hallo,

läuft bei mir unter Ubuntu12.04 und Thunderbird38.5.1
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