mailto-Link in MessageBox

Status
Nicht offen für weitere Antworten.
S

scooterJava

Gast
Ich versuche, in einem MessageDialog einen Link einzubauen, der über "mailto:" den Mail-Client startet:

An passender Stelle wird dazu wie in HTML folgender String ausgegeben:

Code:
<html><a href='mail@web.com'</a>web.com</html>

Obwohl Java sonst HTML-Formatierungen beachtet in Labels usw., interessiert ihn dies hier nicht. Ich nutze Eclipse 3.3.4 unter Java 5 (Java 6 soll nicht genutzt werden) auf Linux- und Windows-Servern. Das Tutorial www.tecchannel.de/webtechnik/entwicklung/402430/java_einsatz_im_netzwerk/index10.html konnte ich nicht geeignet umsetzen, weil die Maillinks aus einer Datenbank ausgelesen werden.
 
S

scooterJava

Gast
"interessiert nicht" heißt, dass der Text einfach nur als Text erscheint, weder wie ein Link unterstrichen noch als Link anklickbar. Beides habe ich aber erwartet.
 

The_S

Top Contributor
Anklickbar kannste vergessen, weil Java nur rendert, nicht auswertet. Du kannst aber bspw. ein JEditorPane und einen HyperlinkListener verwenden.

Zur Fehlerhaften Darstellung: Das ist auch kein HTML ... So könnte es z. B. aussehen:

<html>web.com</html>
 

Eminent

Bekanntes Mitglied
Ich hab mal sowas in der Art gemacht (nur mit ner aufzurufenden URL statt nem mailto), sieht ungefähr so aus:

Code:
JLabel urlLabel = new JLabel(<html><a href........>xxxxx</a></html>);
urlLabel.addMousListener(new MyMousAdapter());
urlLabel.setCursor(new Cursor(Cursor.HAND_CURSOR));

Damit sieht es dann aus wie ein Link und beim drüber fahren mit der Maus wird der Mauszeiger angepasst.

Im MyMousAdapter musst du dann natürlich entsprechend so reagieren wie du dir das vorstellst, sprich dein Mailzeugs machen.

Das mit JEdiotorPane und dem HyperlinkListener wird sicher auch gehen aber das kannte ich zur Zeit als ich meins umgesetzt habe auch noch nicht und wie heißt es immer so schön ... "Never change a running system" :cool:

Greetz
Eminent
 
S

scooterJava

Gast
@Eminent: Sieht ja nett aus. Nur, in meinem Fall haufenweise Labels erzeugen ist nicht so der Bringer (mindestens 10 sind zu erwarten).

Ich habe mich mal an dem Link www.devdaily.com/blog/post/jfc-swing/add-hyperlinklistener-java-component/ orientiert, stehe jetzt aber vor dem Problem, was ich als auszuführenden Code in den Listener eintragen soll. Das Ganze soll in einer Standalone-Anwendung auf einem Server erscheinen, die unter Linux oder Windows laufen. Ideal wäre es, wenn sich beim Linkklick der Mailclient des Users öffnen würde.

EDIT:
Gemeint ist, dass ich hier nicht z. B. Thunderbird aufrufen kann oder so.
 
S

scooterJava

Gast
Nein, leider nicht, da die Anwendung unter Java 5 laufen muss.

Der HyperlinkListener muss doch irgendwas tun. Beim Klick auf den Link soll doch was passieren, nämlich der Mail-Client aufgerufen werden. Das ist aber auf jedem System ein anderer.

@Eminent: Wie sieht dein MyMousAdapter aus?
 
S

scooterJava

Gast
Schlaue Antwort - das weiß ich auch. Ich habe mein Problem ausführlich geschildert. Vielleicht ist es ganz simpel, aber ich sehe die Lösung einfach derzeit nicht.
 
S

scooterJava

Gast
Tut mir leid, wenn sich jemand auf den Schlips getreten fühlt, aber ich bin etwas genervt, weil ich schon seit einer Weile versuche, mein Problem zu lösen.

Zur Lösung des Problems fallen mir nur zwei Sachen:
* JavaMail, aber so bombastisch möchte ich es gar nicht anfangen wegen einer Handvoll Links.
* In den Listener den Befehl "mailto:mailadresse.com" für die Kommandozeile ausführen lassen. Weiß aber nicht, ob das unter Linux funktionieren würde.
 
S

scooterJava

Gast
Danke für alle Tipps, ich würde ja gerne auf Java 6 umsteigen, das wollen die Kunden aber nicht (war schwer genug, sie auf Java 5 umzustimmen).

@Landei: Kann ich leider nicht verwenden, weil Java 6. >>Seufz<<
 

WieselAc

Top Contributor
Hab vor einer weile ein ähnliches Problem gehabt. Zwar wollte ich keine Mail schicken sondern einen Link öffnen, aber vielleicht nützt dir der Ansatz ja auch was.. wenn nicht ignorieren: Hier der Schnippsel den ich dazu im Netz gefunden habe:

Code:
/* Copyright (C) 2002 */
/* This class was found at: [url]http://www.javaworld.com[/url] */

import java.io.IOException;

/**
 * A simple, static class to display a URL in the system browser.
 * 
 * 
 * Under Unix, the system browser is hard-coded to be 'netscape'. Netscape must
 * be in your PATH for this to work. This has been tested with the following
 * platforms: AIX, HP-UX and Solaris.
 * 
 * 
 * Under Windows, this will bring up the default browser under windows, usually
 * either Netscape or Microsoft IE. The default browser is determined by the OS.
 * This has been tested under Windows 95/98/NT.
 * 
 * 
 * Examples:
 * 
 * 
 * BrowserControl.displayURL("http://www.javaworld.com")
 * 
 * BrowserControl.displayURL("file://c:\\docs\\index.html")
 * 
 * BrowserContorl.displayURL("file:///user/joe/index.html");
 * 
 * 
 * Note - you must include the url type -- either "http://" or "file://".
 */
public final class BrowserControl {
    // Used to identify the windows platform.
    private static final String WIN_ID = "Windows";

    // The default system browser under windows.
    private static final String WIN_PATH = "rundll32";

    // The flag to display a url.
    private static final String WIN_FLAG = "url.dll,FileProtocolHandler";

    // The default browser under unix.
    private static final String UNIX_PATH = "netscape";

    // The flag to display a url.
    private static final String UNIX_FLAG = "-remote openURL";

    /**
     * Private constructor.
     */
    private BrowserControl() {
        // do nothing
    }

    /**
     * Display a file in the system browser. If you want to display a file, you
     * must include the absolute path name.
     * 
     * @param url
     *            the file's url (the url must start with either "http://" or
     *            "file://").
     */
    public static void displayURL(String url) {
        boolean windows = isWindowsPlatform();
        String cmd = null;
        try {
            if (windows) {
                // cmd = 'rundll32 url.dll,FileProtocolHandler http://...'
                cmd = WIN_PATH + " " + WIN_FLAG + " " + url;
                Runtime.getRuntime().exec(cmd);
            } else {
                // Under Unix, Netscape has to be running for the "-remote"
                // command to work. So, we try sending the command and
                // check for an exit value. If the exit command is 0,
                // it worked, otherwise we need to start the browser.
                // cmd = 'netscape -remote openURL([url]http://www.javaworld.com[/url])'
                cmd = UNIX_PATH + ' ' + UNIX_FLAG + '(' + url + ')';
                Process p = Runtime.getRuntime().exec(cmd);
                try {
                    // wait for exit code -- if it's 0, command worked,
                    // otherwise we need to start the browser up.
                    int exitCode = p.waitFor();
                    if (exitCode != 0) {
                        // Command failed, start up the browser
                        // cmd = 'netscape http://www.javaworld.com'
                        cmd = UNIX_PATH + " " + url;
                        p = Runtime.getRuntime().exec(cmd);
                    }
                } catch (InterruptedException x) {
                    System.err.println("Error bringing up browser, cmd='" + cmd + "'");
                    System.err.println("Caught: " + x);
                }
            }
        } catch (IOException x) {
            // couldn't exec browser
            System.err.println("Could not invoke browser, command=" + cmd);
            System.err.println("Caught: " + x);
        }
    }

    /**
     * Try to determine whether this application is running under Windows or
     * some other platform by examing the "os.name" property.
     * 
     * @return true if this application is running under a Windows OS
     */
    public static boolean isWindowsPlatform() {
        boolean retVal = false;
        String os = System.getProperty("os.name");
        if (os != null && os.startsWith(WIN_ID)) {
            retVal = true;
        } else {
            retVal = false;
        }
        return retVal;

    }
}
 

WieselAc

Top Contributor
Hab gerade mal selber was rumprobiert, zusammen mit dem GalileoLink solltest du erfolgreich sein :)

Code:
    public static void main(String[] args) {
        BrowserControl.displayURL("mailto:test@test.com");
    }

Eigentlich sollte man zwar den MailToProtocolHandler verwenden, aber irgendwie klappt das nicht und da der FileProtocolHandler auch bei Emails geht, was solls!
 

The_S

Top Contributor
@Landei erst lesen, dann posten ;)

@scooterJava soweit ich weiß, gibts in JDIC auch für Java 5 die Desktop-Klasse.
 
S

scooterJava

Gast
@Hobbit_Im_Blutrausch: Vielen Dank! JDIC scheint das zu sein, was ich suche.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
RySa Mailto spinnt... Allgemeine Java-Themen 6
S mailto Allgemeine Java-Themen 3
G Parameter bei mailto Allgemeine Java-Themen 2
K Email mit Anhang über mailto:. versenden Allgemeine Java-Themen 11
J Class to link Java Allgemeine Java-Themen 4
G Maven link outdated Allgemeine Java-Themen 13
S Link element an vorletzte stelle einfügen Allgemeine Java-Themen 2
D HTTP Http-Link mittels GUI schreiben Allgemeine Java-Themen 5
M redirected link Allgemeine Java-Themen 11
G Datei per Drag and Drop auf den Link öffnen Allgemeine Java-Themen 6
T Youtube Link Allgemeine Java-Themen 4
F.S.WhiTeY JDK installieren Linux: Nach Update link auf Java zerschossen Allgemeine Java-Themen 4
F Parameter im Link /jar-Aufruf Allgemeine Java-Themen 12
kodela aktiver Link in einem Dialog Allgemeine Java-Themen 14
T Link zum Internet Allgemeine Java-Themen 12
M Autostart: Registry oder Link? Allgemeine Java-Themen 6
S regex für einen Link Allgemeine Java-Themen 3
H File Attribut bzw Link erkennen Allgemeine Java-Themen 5
F Link in Applet "verstecken" Allgemeine Java-Themen 3
Nicer Problem mit Link aufruf Allgemeine Java-Themen 6
W Webseite öffnen und Link anklicken Allgemeine Java-Themen 2
P Link in einem ausgewählten Browser öffnen Allgemeine Java-Themen 10
A Überprüfen, ob ein File eine Verknüpfung / Link ist Allgemeine Java-Themen 3
S Link im Browser öffnen Allgemeine Java-Themen 10
S E-Mail-Links: geklickten Link ermitteln Allgemeine Java-Themen 4
B Browser link aus Java-Applikation öffnen Allgemeine Java-Themen 2
J JSP, Link nur bei erfüllter Bedingung anzeigen Allgemeine Java-Themen 6
J JSP Client LInk einbauen Allgemeine Java-Themen 15
M Link parsen bzw. zerlegen Allgemeine Java-Themen 9
Q || Wie speichert man Dateien wo der Pfad als Link(UNIX)... Allgemeine Java-Themen 11
G http:// in Link umwandeln Allgemeine Java-Themen 14
D Linux Link wird als Ordner interpretiert? Allgemeine Java-Themen 2
S Mauszeiger beim Link! Allgemeine Java-Themen 22
M HTML Link Fehler Allgemeine Java-Themen 5
G Html Link in einem JLabel? Allgemeine Java-Themen 3
G Link zu JCreator oder anderem Tool Allgemeine Java-Themen 2
K MessageBox im Applet Allgemeine Java-Themen 6

Ähnliche Java Themen

Neue Themen


Oben