Standard Mail Client in Java aufrufen

Open standard mail in Java 300x150 Standard Mail Client in Java aufrufenIm folgenden Beitrag gibt es wieder mal ein kleines Code-Snippet, mittels welchem das Standard Mailprogramm in Java aufgerufen werden kann.

Um die Standard-Mail-Applikation in nahezu beliebigen Betriebssystemen zu öffnen, eignet sich ein URI mit dem mailto-Protkoll. So muss der folgende Java-Code dazu in der Lage sein den mailto-URI zusammenzusetzen.

Die zweite Schwierigkeit liegt nun darin, diesen URI aufzulösen bzw. auszuführen. Dieser kann leider nicht direkt per Runtime.getRuntime().exec()-Befehl ausgeführt werden, sondern muss als Parameter über ein systemspezifisches Programm gestartet werden. Unser Java-Snippet muss also zwischen den Betriebssystemen unterscheiden können.

Standard Mail in Java öffnen

Der Beispiel-Code kann so wie er ist ausgeführt werden und öffnet das Standard-Mailprogramm mit ein paar Test-Parametern. Im wesentlichen besteht das Snippet aus zwei Funktionen: Zum einen aus der composeEmail-Funktion, welche den mailto-URI erstellt, den Betriebssystem-spezifischen Aufrufbefehl erzeugt und diesen ausführt und zum anderen aus der uriEncode-Funktion, welche als Hilfsfunktion dient und die Parameter des mailto-URI enkodiert.

Wie die Unterscheidung der Betriebssysteme funktioniert, könnt ihr hier nachlesen. Nachfolgend lasse ich den Code bzw. dessen Kommentare für sich sprechen:

public class MailHelper {

	public static void main(String[] args) {
		
		try {
			//Mailprogramm öffnen mit "Empfänger", "Betreff", "Nachricht"
			composeEmail("webmaster@code-bude.net", 
						 "Danke für das Snippet!", 
						 "Hallo Raffael,\r\ndiese Mail wurde per Java-Snippet versendet.");
	    }
	    catch (Exception err) {
	      err.printStackTrace();
	    }
		System.out.println("Done!");
	}
	
	public static void composeEmail(String receiver, String subject, String body) throws Exception {
		//Mailto-URI zusammensetzen. Betreff und Body müssen encodiert werden		
		String mailto = "mailto:" + receiver;        
		mailto += "?subject=" + uriEncode(subject);
		mailto += "&body=" + uriEncode(body);
		
		//Run-Befehl je nach Betriebssystem erzeugen
		String cmd = "";
		String os = System.getProperty("os.name").toLowerCase();
	    if (os.contains("win")){
	 		cmd = "cmd.exe /c start \"\" \"" + mailto + "\"";
		}
	    else if (os.contains("osx")){
	    	cmd = "open " + mailto;
		}	    
	    else if (os.contains("nix") || os.contains("aix") || os.contains("nux")){
	    	cmd = "xdg-open " + mailto;
	    }
	    //Mail-Client mit Parametern starten
	    Runtime.getRuntime().exec(cmd);
	 
	}
	
	private static String uriEncode(String in) {
		String out = new String();
	    for (char ch : in.toCharArray()) {
	    	out += Character.isLetterOrDigit(ch) ? ch : String.format("%%%02X", (int)ch);
	    }
	    return out;
	}	
}

Sollte etwas unklar sein, scheut euch nicht einen Kommentar zu hinterlassen. Wenn ihr noch Ideen habt, wie man den Code verbessern kann, bin ich ebenfalls für jeden Kommentar dankbar. Ansonsten – viel Spaß beim Programmieren!

Standard Mail Client in Java aufrufenÜber den Autor: Dieser Artikel, sowie 359 andere Artikel auf code-bude.net, wurden von Raffael geschrieben. – Seit 2011 blogge ich hier über Programmierung, meine Software, schreibe Tutorials und versuche mein Wissen, so gut es geht, mit meinen Lesern zu teilen. Zudem schreibe ich auf derwirtschaftsinformatiker.de über Themen meines Studiums.  //    •  • Facebook  • Twitter


Hinterlasse einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Sie dient nur dem Spamschutz.