Confluence: How-To Send a Mail

Confluence mail sending is one of the less documented functions, I found out. So after trying different things and finaly find my solution I document it here.

My first “solution” was to send the Mail directly via SMTP, after finding this article:

https://discursive.atlassian.net/wiki/display/CJCOOK/Sending+Mail+with+SMTP

Code was sth. Like this:

import org.apache.commons.net.smtp.SMTPClient;
SMTPClient client = new SMTPClient( );
client.connect("smtpserver");
client.sendSimpleMessage("myMail@smtpserver.com",
                          "someone@internet.com",
                          "TEST" );
client.disconnect( );

Okay. First try and it did not work. Also, I did not see a chance to get the SMTP – Settings from the Confluence installation. And also, where should I put the Subject into?

Hm, there must be a standard confluence possibility, I thought. And found:

http://blog.k15t.com/sending-email-from-confluence-plugins

Code (from that page):

String emailText = "Email Text with HTML";
ConfluenceMailQueueItem item = new ConfluenceMailQueueItem(
         contact.getEmail(),
         null,
         subject,
         emailText,
         ConfluenceMailQueueItem.MIME_TYPE_HTML);
item.setFromName("Example Inc.");
item.setFromAddress("website@example.com");
taskManager.addTask("mail", item);

Okay, this worked for me. But I wanted to send plain Text, immediately, and overwrite the configured Subject Prefix from the Confluence installation.

With all those premises, I got finally to this conclusion:

public String execute() {
    User user = AuthenticatedUserThreadLocal.getUser();
    String toAddress ="test@home.net";
    String subject = "SMS test";
    String body = "Test message sent from user"+user.getName();
    try{
        SMTPMailServer  mailServer = MailFactory.getServerManager().getDefaultSMTPMailServer();
        mailServer.setPrefix("");
        mailServer.send(new Email(toAddress).setSubject(subject).setBody(body).setMimeType(ConfluenceMailQueueItem.MIME_TYPE_TEXT));
    }
    catch (Exception e){e.printStackTrace();}
    return SUCCESS;
}

Training again

Gestern war ich (wieder mal) das erste Mal seit ca. 10 Wochen beim Training. Ich weiss nicht wieso das so ist, aber das erste Training nach einer längeren Pause läuft irgendwie immer richtig gut. Vielleicht ist man dann noch am motiviertesten oder so.
Was neu ist, ist, dass sich der Muskelkater in Grenzen hält heute… Vielleicht liegts daran, dass ich vor meiner Pause recht regelmässig beim Training war, oder so….

Lotus Notes Tipp: OOO-Agent extern aktivieren

Um den OutOfOfficeAgenten in einem beliebigen MailFile zu aktivieren benötigt man neben dem Agenten in dem Mail-File im wesentlichen das OOO-Profil um dort die entsprechenden Einstellungen machen zu können.

Sub enableOOO(personDoc as NotesDocument)
  Dim mailfile As New NotesDatabase("","")
  Call mailfile.Open(personDoc.MailServer(0), personDoc.MailFile(0))
  If mailfile.Isopen Then
    Dim ooo_agent As NotesAgent
    Dim ooo_profile As NotesDocument
    Set ooo_profile = mailfile.Getprofiledocument("OutOfOfficeProfile")
    Set ooo_agent = mailfile.Getagent("OutOfOffice")
    'Just enable in OOO-Profile
    ooo_profile.BookBusyTime="0"
    If ooo_profile.Hasitem("AgentLastRun") Then
      Call ooo_profile.Getfirstitem("AgentLastRun").Remove()
    End If
    ooo_profile.CurrentStatus="1"
    ooo_profile.TaskState="1"
    ooo_profile.FirstDayOut=Today
    'Abwesend bis zum 01. nächsten Jahres. Anwendungsfall hier: Austritt eines Mitarbeiters mit entsprechender Benachrichtigung an die Kontakte des Mitarbeiters.
    ooo_profile.FirstDayBack=CDat("01.01."+Format(Year(Today)+1))
    ooo_profile.AdminP_Status=""
    ooo_profile.Notified=""
    ooo_profile.NotificationReport=""
    ooo_profile.OOO_PersonLeft="X"
    Call ooo_profile.ComputeWithForm(False,False)
    'Hier muss noch der entsprechende Text gesetzt werden (erfolgt in meinem Fall per Formel im OOO-Profile)
    'Save Profil und Agent
    ooo_agent.Isenabled = True
    Call ooo_profile.Save(True,False)
    Call ooo_agent.Save()
  End If
End Sub

Doc wird der Sub übergeben und ist in diesem Fall das markierte Personendokument aus der names.nsf.

Erweiterung: Damit der ausführende Admin keine Berechtigung auf dem Mailfile benötigt, kann diese Funktion auch in einem geschedulten Agenten (mit ServerID gesigned) aufgerufen werden .

Lotus Notes Tipp: Workaround für das OnChange – Event im Notes Client

Wenn bei Keyword Change in LN (Client) Lotusscript – Code ausgeführt werden soll geht das leider nicht mit den Events OnChange oder ähnlichem. Ein Workaround ist “Refresh Document on Keyword Change” anzuhaken bei dem zu überwachenden Feld und im PostRecalc-Event des Dokuments die gewünschte Funktionalität auszuprogrammieren. (z.B. Felder setzen, etc.) Siehe Screenshots untern.

RefreshOnKeywordChangeExample.nsf

Jakob – schönste Schoten eines Zweijährigen

Ich (oder Andrea?): “Jakob, du bist doch müde!”
Jakob: “Nein, top fit!”
- Er kennt die richtige Antwort….

Abendessen. Ich schneide Jakobs Brot klein.
Ein anerkennender Blick von ihm, ein Schulterklopfen:
“Gut gemacht, Papa!”
- So ein Lob motiviert doch ungemein :-)

Oder noch älter (irgendwann im Sommer 2011)
Jakob: “Meins!”
Ein Elternteil (weiss nicht mehr wer): “Mach mal die Augen zu, das was du dann siehst ist eventuell deins!”
Jakob: “Eis…” :-)
- Nicht doof der Kleine….

Warum gibt es eigentlich keine zentrale Stelle für Fechtturnier – Ausschreibungen???

Der Titel sagt es schon. Ich war vor ein paar Tagen mal wieder auf der Suche nach einer Ausschreibung. Ich habe sie zwar letztendlich gefunden, aber komfortabel ist etwas anderes…

Cool wäre ein Portal in allen Sprachen der Welt, in dem man nach Ausschreibungen in einem definierten Radius, in seiner Waffengattung/seiner Altersklasse suchen kann. Am liebsten noch mit dem ungefähren Niveau des Turniers. Dort können alle Vereine/Verbände ihre PDF Ausschreibungen hochladen und ein kleines Formular ausfüllen.

A website for a smarter fencing world…

Aktion? Selber bauen? Zeit? Gibt es vielleicht jmd. bei der FIE, der das machen kann? Oder gibt es das vielleicht schon und wird nur nicht verwendet/promotet? Hm.

Another 2 ct. On google+/facebook/twitter/blog

Auch ich bin mittlerweile in diversen sozialen Medien unterwegs. Dies Blog war das erste und ist für mich noch immer das wichtigste Medium. Dazu gekommen sind in letzter Zeit Facebook, G+ und Twitter. Zudem ist noch ein meinvz – Account vorhanden und diverse Anmeldung niemals genutzter Netzwerke wie wer-kennt-wen oder lokalisten.

Nutzen tue ich im wesentlichen mein Blog und selten mal Facebook und G+. Ganz ganz selten wird auch getwittert. G+ und Facebook nutze ich im wesentlichen “lesend”. Dabei sind mir ein paar Unterschiede aufgefallen, die ich hier kurz für mich defnieren wollte (auch wenn insbesondere über Facebook vs. G+ schon erstaunlich viel geschrieben wurde….)

Blog:
Ist für mich der Ort, an dem ich Dinge ausformuliere, mal etwas längere Artikel schreibe oder mit Technik rumexperimentiere.

G+:
Der Ort, der dem Medium Blog recht nahe kommt. Es wird recht viel auch Längeres und Relevantes gepostet und rege diskutiert. Derzeit sind dort hauptsächlich meine Arbeitskollegen zu finden und einige interessante Personen, die dort Posten. Gefühlt eher “professionell”.

Facebook:
Na ja, da sind halt “alle”. Und um mitzubekommen, was woanders so läuft ist es schon cool. Aber das Dauerfeuer an irrelevanten Statusinformationen ist ätzend. Bislang habe ich den Schalter zum abstellen noch nicht gefunden… Auch der Inhalt ist meistens nicht so wichtig.

Twitter:
Hm. Twitter ist recht emotional. Ich glaube hier wird eher mal eben etwas gepostet, wenn einen gerade etwas ärgert oder freut oder wenn man einen Artikel oder eine Meinung promoten will. Politisch ist es auch oft. Um mitzubekommen, was in der Welt läuft ist es super. Gerade, wenn man irgendwo in der Diaspora sitzt…

Mein aktuelles Fazit (wird sich vermutlich im Laufe der Zeit ändern :-) ):
Jedes grössere Netzwerk hat einen speziellen Nutzwert. Mein Favorit im Moment ist neben dem Blog G+. Als Kommunikationscenter ist Trillian empfehlenswert. Auch in der Basic-Version unterstützt es schon recht viele Verzeichnisse/Dienste etc. Und es sieht wesentlich besser wie Miranda IM aus…