Andreas Berkl: mailto - Link mit "&" im Subject, z.B. "R&B-Platten gesucht"

ich quäle mich gerade mit folgendem Problem:

In einem mailto-Link mit Subject will ich ein "&" im Subject verwenden, also z.B. Subject="Ihre Nachricht: R&B-Platten gesucht".

Nun wird dummerweise das "&" bzw. "&" verwendet, um z.B. einen "cc"-Empfänger anzugeben.

Mein Link sieht so aus:
<A HREF="mailto:yourname@yourdomaine.com?subject=Ihre%20Nachricht:%20R&B-Platten%20gesucht">R&B-Platten gesucht</A>

Gibt es eine Möglichkeit, das "&" als "Nutzzeichen" zu maskieren, damit es dargestellt wird?

Eine weitere Frage noch: Dieser mailto-Link wird in Outlook 97 (im Gegensatz zu anderen Mailprogrammen) kleingeschrieben (naja, Microsoft...). Irgendeine Chance, das auszuhebeln?

Andreas

  1. Hi,

    In einem mailto-Link mit Subject will ich ein "&" im Subject verwenden, also z.B. Subject="Ihre Nachricht: R&B-Platten gesucht".

    auch ein mailto-Link ist - davon abgesehen, dass er von einer externen Applikation abhängig ist - eine URL. Es gilt also handelsübliche URL-Kodierung.

    <A HREF="mailto:yourname@yourdomaine.com?subject=Ihre%20Nachricht:%20R&B-Platten%20gesucht">R&B-Platten gesucht</A>

    Die Leerzeichen kodierst Du bereits korrekt.

    Eine weitere Frage noch: Dieser mailto-Link wird in Outlook 97 (im Gegensatz zu anderen Mailprogrammen) kleingeschrieben (naja, Microsoft...). Irgendeine Chance, das auszuhebeln?

    Ja: Verwende nicht Outlook 97.

    Cheatah

    --
    X-Will-Answer-Email: No
    1. Hallo Cheatah,

      auch ein mailto-Link ist - davon abgesehen, dass er von einer externen Applikation abhängig ist - eine URL. Es gilt also handelsübliche URL-Kodierung.

      Hat ´nen Moment gedauert, bis der Groschen (Cent) gefallen ist:
      & = ANSI 38 = HEX 26, ergo: "&" durch "%26" ersetzen...

      d.h. der Link sieht so aus, falls jemand auch mal damit Probleme haben sollte:
      <A HREF="mailto:yourname@yourdomaine.com?subject=Ihre%20Nachricht:%20R%26B-Platten%20gesucht">R&B-Platten gesucht</A>

      Eine weitere Frage noch: Dieser mailto-Link wird in Outlook 97 (im Gegensatz zu anderen Mailprogrammen) kleingeschrieben (naja, Microsoft...). Irgendeine Chance, das auszuhebeln?

      Ja: Verwende nicht Outlook 97.

      Ich ahnte es...

      Vielen Danke für die Nachhilfestunde, Andreas

      1. Hi,

        Hat ´nen Moment gedauert, bis der Groschen (Cent) gefallen ist:

        aber er ist gefallen, und das war mein Ziel :-)

        Eine weitere Frage noch: Dieser mailto-Link wird in Outlook 97 (im Gegensatz zu anderen Mailprogrammen) kleingeschrieben (naja, Microsoft...). Irgendeine Chance, das auszuhebeln?
        Ja: Verwende nicht Outlook 97.
        Ich ahnte es...

        Die Probleme, die bei der Einbeziehung einer externen Applikation auftreten, sind zwar besonders bei mailto-Formularen bekannt, aber bei mailto-Links in gleichem Maße vorhanden. Wie die Lösung aussieht, und warum diese nur durch Verzicht auf "mailto" bestehen kann, erfährst Du im Archiv.

        Cheatah

        --
        X-Will-Answer-Email: No
        1. auch Hi,

          Die Probleme, die bei der Einbeziehung einer externen Applikation auftreten, sind zwar besonders bei mailto-Formularen bekannt, aber bei mailto-Links in gleichem Maße vorhanden. Wie die Lösung aussieht, und warum diese nur durch Verzicht auf "mailto" bestehen kann, erfährst Du im Archiv.

          Habe mit Deinem Tip folgendes PHP-Konstrukt gebastelt, mit den Mailern von Mozilla und Netscape 4 tut´s jetzt auch:

          "?subject=Ihre%20Anzeige%20im%20Intranet:%20" . htmlentities(str_replace(array(" ","&"), array("%20","%26"), $zeile["kurztext"])) ?>"

          Outlook ist auch dazu zu blöde...

          Vielleicht sollte man "&" gleich programmatisch durch "+" ersetzen ;-)

          Werde mal darüber nachdenken, ob ich die Mail nicht gleich mit PHP verschicke, ist eh netter...

          Andreas

          1. Moin!

            Habe mit Deinem Tip folgendes PHP-Konstrukt gebastelt, mit den Mailern von Mozilla und Netscape 4 tut´s jetzt auch:

            "?subject=Ihre%20Anzeige%20im%20Intranet:%20" . htmlentities(str_replace(array(" ","&"), array("%20","%26"), $zeile["kurztext"])) ?>"

            Das ist suboptimal.

            Wenn du einen String als Wert in einer URL stehen haben willst, gibt es in PHP die wunderbare Funktion urlencode(). Die ersetzt dir alle problematischen Zeichen durch ihre %Hex-Darstellung - auch das Leerzeichen, auch das Ampersand.

            Mit htmlentities() wirst du hingegen Schiffbruch erleiden.

            Mit anderen Worten: Wenn du als Parameter des Links den Parameter mit Namen "subject" mit einem Wert versorgen willst, mach es so:
            "<a href... ?subject=".urlencode($zeile['kurztext'])">".htmlentities($zeile['kurztext']).</a>"

            htmlentities() wandelt alle im String enthaltenen Zeichen in Entities, damit die Zeichen auf der Seite exakt so erscheinen, wie im String (also auch alle <, > und &).

            urlencode() wandelt alle im String enthaltenen Zeichen so, dass man sie als URL-Parameterwert problemlos verwenden kann.

            Zwei Anwendungsziele - zwei Codierungen - zwei dafür geeignete Funktionen. Alles ist bestens.

            Der Vollständigkeit halber sei noch die Funktion rawurlencode() erwähnt. Mit der hatte ich bei der Übergabe eines Pfades mal mehr Glück (lies: nur damit ging es seltsamerweise). Sie codiert etwas anders bzw. vollständiger, ist aber genauso kompatibel.

            Werde mal darüber nachdenken, ob ich die Mail nicht gleich mit PHP verschicke, ist eh netter...

            Und auch gar nicht so schwer zu realisieren.

            - Sven Rautenberg

            --
            "Bei einer Geschichte gibt es immer vier Seiten: Deine Seite, ihre Seite, die Wahrheit und das, was wirklich passiert ist." (Rousseau)
            1. Hallo Sven

              Wenn du einen String als Wert in einer URL stehen haben willst, gibt es in PHP die wunderbare Funktion urlencode().

              Manchmal sieht man den Wald vor lauter Bäumen nicht! urlencode() neu zu erfinden erinnert mich an die Geschichte mit dem Rad...

              Mit htmlentities() wirst du hingegen Schiffbruch erleiden.

              Stimmt, das war ein "Relikt" aus einer früheren Stufe...

              Andreas

      2. Hi,

        <A HREF="mailto:yourname@yourdomaine.com?subject=Ihre%20Nachricht:%20R%26B-Platten%20gesucht">R&B-Platten gesucht</A>

        Fast. Selbstverständlich muß auch das sichtbare & noch als HTML-Entity kodiert werden.

        cu,
        Andreas

        --
        Der Optimist: Das Glas  ist halbvoll.  - Der Pessimist: Das Glas ist halbleer. - Der Ingenieur: Das Glas ist doppelt so groß wie nötig.