Hallo Korny.
Zum Mail-Versand:
OpenOffice kann Mails nicht vollautomatisch versenden. Mit createSimpleMailMessage() kann man zwar eine Mail erstellen, allerdings mit zwei Einschränkungen:
1. Die Mail darf keinen Body haben.
2. Die Mail wird nicht von OOo selbst verschickt, sondern nur an das Standard-Mail-Programm übergeben. Was dann damit passiert, kann OOo nicht beeinflussen. Thunderbird zeigt z.B. eine Warnung an, dass eine andere Anwendung versucht eine Mail zu versenden. Die Warnung kann man zwar dauerhaft unterdrücken, was aber wohl ein gewisses Sicherheits-Risiko darstellt.
Ich habe bei mir eine Lösung mittels PHP realisiert. Allerdings muss man dazu einen Ordner mit ein paar PHP-Dateien auf den Rechner kopieren (nicht installieren!) – was aber ja auch nicht immer möglich ist. Dafür erfolgt der Versand aus OOo dann vollautomatisch.
Zum Feld mit der Bedingung Falsch:
Habe ich so verstanden, dass in dem Feld eine Formel steht, die in Abhängigkeit anderer Zellen einen WAHR/FALSCH-Wert berechnet. Bei Falsch müsste dann eine Prozedur gestartet werden, die die Mail versendet.
Dazu müsste man Änderungen an der Tabelle überwachen und darauf reagieren. Das macht man mit einem Listener. Der reagiert dann zwar auf das berechnete Feld, liefert aber einen Bezug zu der/den Zelle(n) die der Berechnung zu Grunde liegen – die also in der Formel vorkommen. Von diesem Bezug müsste dann auf das berechnete Feld zurück schließen, um dessen Wert prüfen zu können. Das geht unter bestimmten Bedingen: Wenn z.B. alle Zellen die in der Formel vorkommen und die Zelle mit der Formel selbst in einer Zeile liegen.
A1: 1
B1: 1
C1: =WENN(A1+B1<3;WAHR;FALSCH)
Ändert man jetzt A1 oder B1 auf 2, so wird C1 FALSCH. In der Mail-Prozedur bekommt man einen Bezug auf A1 oder B1 – je nachdem wo die Änderung gemacht wurde. So oder so war die Änderung aber in Zeile 1, so dass man den Schnittpunkt dieser Zeile mit der Spalte C - also die Zelle C1 - prüfen kann und ggf. die Mail versenden kann.
Peter
automatische E-mail
Moderator: Moderatoren
Re: automatische E-mail
Hallo Peter,
hier ist dir wohl was durcheinander geraten
, der Thread von Korny ist ein anderer s.u.
Aber trotzdem ein paar Fragen/Anmerkungen dazu:
vg
famo
PS:
am besten in viewtopic.php?f=18&t=31286 antworten.
hier ist dir wohl was durcheinander geraten

Aber trotzdem ein paar Fragen/Anmerkungen dazu:
In viewtopic.php?f=18&t=31286#p125232 schreibt Korny aber das er schon eine Möglichkeit gefunden hat E-Mails mit Text/Body zu verfassen und es auch funktioniert.peterschleif hat geschrieben:Hallo Korny.
Zum Mail-Versand:
OpenOffice kann Mails nicht vollautomatisch versenden. Mit createSimpleMailMessage() kann man zwar eine Mail erstellen, allerdings mit zwei Einschränkungen:
1. Die Mail darf keinen Body haben.

Im selben Thread weiter unten hab ich noch angemerkt, dass man SMTP Server etc. in OOo spezifizieren kann, heißt das nicht das OOo auch direkt E-Mail versenden kann?peterschleif hat geschrieben:2. Die Mail wird nicht von OOo selbst verschickt, sondern nur an das Standard-Mail-Programm übergeben. Was dann damit passiert, kann OOo nicht beeinflussen. Thunderbird zeigt z.B. eine Warnung an, dass eine andere Anwendung versucht eine Mail zu versenden. Die Warnung kann man zwar dauerhaft unterdrücken, was aber wohl ein gewisses Sicherheits-Risiko darstellt.
vg
famo
PS:
am besten in viewtopic.php?f=18&t=31286 antworten.
-
- **
- Beiträge: 34
- Registriert: Fr, 06.11.2009 05:49
Re: automatische E-mail
Stimmt. Sorry. Bin noch etwas unsicher in der Foren-Benutzung. Aber der Thread war schon richtig; nur die Anrede war falsch.famo hat geschrieben:Hallo Peter,
hier ist dir wohl was durcheinander geraten, der Thread von Korny ist ein anderer s.u.
Das ist wohl der Standard-Aufruf von Thunderbird für ein neues Composer-Fenster. Das bringt dich aber eben nur fast ans Ziel. Es fehlt der entscheidende Mausklick der die Mail abschickt. Darum ist die Lösung für ein Vollautomatisierung meiner Meinung nach ungeeignet. (Mal abgesehen davon, dass sich die Lösung darauf verlässt, dass Thunderbird installiert ist). Eventuell erledigt ja die Extension den fehlenden Mausklick – hab' es nicht ausprobiert.famo hat geschrieben:In viewtopic.php?f=18&t=31286#p125232 schreibt Korny aber das er schon eine Möglichkeit gefunden hat E-Mails mit Text/Body zu verfassen und es auch funktioniert.
Korny1986 hat geschrieben:Code: Alles auswählen
shell("C:\thunderbird\thunderbird.exe", 3, "-Compose to=" & sEmail & ",subject=" & sBetreff & ",body=" & sText & ",attachment=" & sDatei)
Das kannte ich noch nicht. Habe es gerade mal getestet. Serienmails mit Writer funktionieren. Vielleicht kann man auf die Funktionalität auch von Calc bzw. Basic aus zugreifen. Etwas komisch finde ich, dass man die Zugangsdaten in den Optionen im Bereich „Writer“ eingeben muss. Das stimmt mich etwas pessimistisch in Bezug auf Calc.famo hat geschrieben:Im selben Thread weiter unten hab ich noch angemerkt, dass man SMTP Server etc. in OOo spezifizieren kann, heißt das nicht das OOo auch direkt E-Mail versenden kann?
Neeee. Dann komme ich noch mehr durcheinander mit den Threads.famo hat geschrieben:am besten in viewtopic.php?f=18&t=31286 antworten.

Peter
-
- **
- Beiträge: 34
- Registriert: Fr, 06.11.2009 05:49
Re: automatische E-mail
Dazu musst Du einen Listener auf die zu überwachende Zelle setzen. Code siehe unten. Außerdem müssen die Prozeduren AddListener() und RemoveListener() den Ereignissen "Dokument öffnen" und "Dokument schließen" zugewiesen werden. Die Prozedur Change_modified() wird dann bei jeder Änderung der Zelle Tabelle1.C5 aufgerufen.absolute beginner hat geschrieben:Ich möchte das "Email -Makro" ausführen wenn sich der Wert einer bestimmten Zelle ändert.
Statt eine feste Zelle anzugeben, wäre es vielleicht besser, der Zelle einen Namen zu geben und dann diesen Namen im Code zu verwenden. Sonst musst Du den Code jedes mal anpassen wenn eine Zeile/Spalte vor der Zelle C5 eingefügt/gelöscht wird.
Peter
Code: Alles auswählen
Option Explicit
Global oRange
Global oListener
Const LISTENER_TABLE = "Tabelle1"
Const LISTENER_RANGE = "C5"
Sub AddListener()
oListener = CreateUnoListener("Change_", "com.sun.star.util.XModifyListener")
oRange = ThisComponent.Sheets(LISTENER_TABLE).getCellRangeByName(LISTENER_RANGE)
oRange.addModifyListener(oListener)
End Sub
Sub RemoveListener()
On Error Resume Next
oRange.removeModifyListener(oListener)
End Sub
Sub Change_modified(aEvent)
MsgBox LISTENER_TABLE & "." & LISTENER_RANGE & " wurde verändert"
End Sub