rosanoda: E-Mail Formular mit variablen Betreff

Hallo,

ich habe folgende Frage die mir innerhalb des Forums nicht beantwortet werden konnte.

Ich habe ein E-Mail Formular was rein auf HTML basiert. Kein CGI, PHP und auch keine Verwendung von Formmailern jeder Art und SOLL auch nicht verwendet werden.

Die Frage lässt sich hoffentlich genauso leicht beantworten wie ich sie jetzt stelle.

Das E-Mail Formular funktioniert einwandfrei. Es wird ausgefüllt und dann mit dem installierten Mailclient einwandfrei im Hintergrund verschickt und der Inhalt der Templates ist in Textform in der E-Mail angegeben. Alles perfekt.

Was ich nun wissen möchte ist, ob es möglich ist das erste Textfeld was eingetragen werden muss, automatisch als Betreff zu verwenden.

Beispiel Quelltext:

<form method="post" enctype="text/plain" action="mailto:  
rosanoda@gmx.de?cc= rosanoda@gmx.de;&amp; subject= Testemail " name="tp_escalation">

Hier ist unter "subject" Testemail angegeben. Ich mächte aber das er mir ein Textfeld ausliest und das in den Betreff macht.

Beispiel Textfeld:

<tr><td style="text-align: right;"><small>Betreff : &nbsp;</small></td>  
<td><input size="40" name="BP "></td></tr> 

Ich möchte es so einfach wie möglich halten und nicht mit den oben genannten Optionen wie cgi, php oder ähnliches arbeiten.

Daher meine Frage:

Ist es möglich?
Wenn ja, wo muss ich den entsprechenden Verweis ansetzten?

Ich sage im vorraus schonmal Dankeschön ... :-)

Greetz

rosanoda

  1. Ich habe ein E-Mail Formular was rein auf HTML basiert. Kein CGI, PHP und auch keine Verwendung von Formmailern jeder Art und SOLL auch nicht verwendet werden.

    blöde frage: warum?

    Ich möchte es so einfach wie möglich halten und nicht mit den oben genannten Optionen wie cgi, php oder ähnliches arbeiten.

    javascript ist deine einzige chance - und daher musst du davon ausgehen, dass es nicht richtig funktionieren wird (in rund 5 bis 10% der fälle)

    1. blöde frage: warum?

      Der Hintergrund ist, das ich das Formular in eine Datenbank einbinden will/muss und diese ausschließlich HTML vorsieht. Auch den Weg über Java wird nicht funktionieren.

      javascript ist deine einzige chance - und daher musst du davon ausgehen, dass es nicht richtig funktionieren wird (in rund 5 bis 10% der fälle)

      Warum ist Java meine einzige Chance, bzw warum geht es mit reinem HTML nicht? Ich benutze nun schon seit 2 Jahren Formulare dieser Art und nie, wirklich niemals, ist eine E-Mail nicht angekommen.

      1. Tach,

        javascript ist deine einzige chance - und daher musst du davon ausgehen, dass es nicht richtig funktionieren wird (in rund 5 bis 10% der fälle)

        Warum ist Java meine einzige Chance,

        "Die von Sun entwickelte Sprache Java hat mit der Netscape-Erfindung JavaScript nicht mehr gemein als Gummi mit Gummibärchen, Mozart mit Mozartkugeln oder die Regional-Liga mit einem Region-Alligator." - Cheatah

        bzw warum geht es mit reinem HTML nicht?

        HTML hat keine Funktionalität dazu.

        Ich benutze nun schon seit 2 Jahren Formulare dieser Art und nie, wirklich niemals, ist eine E-Mail nicht angekommen.

        Und was ist mit den E-Mails die nicht versendet wurden, da die Nutzer kein E-Mailprogramm installiert/konfiguriert hatten um die mailto-Links zu verarbeiten?

        mfg
        Woodfighter

        1. Hallo an alle,

          ersteinmal Dankeschön für die vielen Antworten. Ich glaube ich muss meine Frage noch ein wenig mehr spezifizieren.

          Ich möchte nur, das er mir das erste Textfeld was ich in dem Formular eingebe, als Betreff verwendet. Mehr nicht. Das Template an sich macht alles was ich will und auch soll, nur den Betreff konnte ich bisher immer nur fest vergeben, was ich aber nicht möchte.

          Nochmal ein Beispielcode:

          <html>  
          <head>  
          <title>Test Template</title>  
          </head>  
          <body bgcolor="20A0F">  
          <center>  
          <h1><font face="Arial" size="4"><u>Test Template</u></font></h1>  
          <form  
            
          action="mailto:rosanoda@gmx.de?cc=rosanoda@gmx.de;&amp;  
            
          subject= HIER MUSS WAS REIN DAS ER SICH DIE EINGABE AUS DEM FELD "BETREFF" HOLT.  
            
          "method="post" enctype="text/plain">  
            
            
          <table border="0" cellpadding="4" cellspacing="0" bgcolor="20A0F0">  
           <tr>  
          <td align="right">Betreff:</td>  
            <td><input name="Betreff" type="text" size="30" maxlength="30"></td>  
           </tr><tr>  
            <td align="right">Nummer  :</td>  
            <td><input name="Nummer" type="text" size="30" maxlength="30"></td>  
           </tr>  
            
          <tr>  
            <td align="right">Formular:</td>  
            <td>  
             <input type="submit" value=" Absenden ">  
             <input type="reset" value=" Abbrechen">  
            </td>  
           </tr>  
          </table>  
          </form>  
          </body>  
          </html> 
          

          Ich hoffe ich habe mich jetzt besser ausgedrückt .. *lol*

          Gruß und Dankeschön

          rosanoda

          1. Ich hoffe ich habe mich jetzt besser ausgedrückt .. *lol*

            das war bereits klar ;)

            du hast auch schon eine antwort zu lösung bekommen sowie informationen [1] warum diese (die einzige lösung, wenn du nichts serverseitiges willst) nicht optmal ist

            [1] in allen beiträgen verteilt

      2. Mahlzeit rosanoda,

        javascript ist deine einzige chance - und daher musst du davon ausgehen, dass es nicht richtig funktionieren wird (in rund 5 bis 10% der fälle)

        Warum ist Java meine einzige Chance,

        Nicht Java ... http://de.selfhtml.org/javascript/intro.htm@title=Javascript.

        bzw warum geht es mit reinem HTML nicht?

        Weil HTML eine reine Seitenbeschreibungssprache ist. HTML baut nur die Struktur eines Dokuments auf, so dass ein Browser dieses Dokument darstellen kann. HTML ist rein statisch und hat mit Benutzerinteraktion nichts am Hut.

        Javascript hingegen ist eine Programmiersprache und kann auf Benutzereingaben bzw. -aktionen reagieren.

        Beispielsweise kann <http://de.selfhtml.org/javascript/sprache/eventhandler.htm#onsubmit@title=beim Absenden> eines Formulars der http://de.selfhtml.org/javascript/objekte/elements.htm#value@title=Wert eines Texteingabefeldes an das http://de.selfhtml.org/javascript/objekte/forms.htm#action@title=Formularziel angehängt bzw. dieses vor dem Abschicken manipuliert werden.

        Ich benutze nun schon seit 2 Jahren Formulare dieser Art und nie, wirklich niemals, ist eine E-Mail nicht angekommen.

        Das meinte suit nicht. Vielmehr ist es möglich, dass einige Deiner Besucher Javascript nicht aktiviert haben (dürfen/können), so dass dann der beschriebene Mechanismus nicht funktioniert und Du doch wieder den Standardbetreff hättest.

        MfG,
        EKKi

        --
        sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
      3. Der Hintergrund ist, das ich das Formular in eine Datenbank einbinden will/muss und diese ausschließlich HTML vorsieht.

        eine datenbank mit mit html kommunizieren kann? glaub ich nicht

        über formulare ermittelte daten an eine datenbank übergeben ist doch die leichteste übung für eine cgi-anwendung?

  2. Hallo auch!

    Beispiel Quelltext:

    <form method="post" enctype="text/plain" action="mailto:

    rosanoda@gmx.de?cc= rosanoda@gmx.de;&amp; subject= Testemail " name="tp_escalation">

    
    >   
    > Hier ist unter "subject" Testemail angegeben. Ich mächte aber das er mir ein Textfeld ausliest und das in den Betreff macht.  
    >   
    > Beispiel Textfeld:  
    >   
    > ~~~html
    
    <tr><td style="text-align: right;"><small>Betreff : &nbsp;</small></td>  
    
    > <td><input size="40" name="BP "></td></tr> 
    
    

    Ich möchte es so einfach wie möglich halten und nicht mit den oben genannten Optionen wie cgi, php oder ähnliches arbeiten.

    Wenn der Einsatz von JavaScript in Ordnung ist, dann versuche folgendes:

    Versehe den FORM-Tag mit einem onsubmit-Eventhandler, der den Inhalt des Feldes an den Inhalt des action-Attributes anhängt:

    <form method="post" enctype="text/plain" action="mailto:rosanoda@gmx.de?cc=rosanoda@gmx.de&subject=" name="tp_escalation" onsubmit="if(document.getElementsByName('Name des Textfeldes').length > 0) { this.action += encodeURIComponent(document.getElementsByName('Name des Textfeldes')[0].value); } else { this.action += encodeURIComponent('Standardbetreff'); }">

    Müsste klappen.

    Gruß!
    Käfer

    1. Mahlzeit Käfer,

      <form method="post" enctype="text/plain" action="mailto:rosanoda@gmx.de?cc=rosanoda@gmx.de&subject=" name="tp_escalation" onsubmit="if(document.getElementsByName('Name des Textfeldes').length > 0) { this.action += encodeURIComponent(document.getElementsByName('Name des Textfeldes')[0].value); } else { this.action += encodeURIComponent('Standardbetreff'); }">

      Müsste klappen.

      Schlechte Idee: wenn der Benutzer kein Javascript aktiviert hat, gibt es gar keinen Betreff. Außerdem halte ich persönlich es für besser, entsprechende Code-Teile erstens in allgemeine Funktionen zu stecken und zweitens aus den HTML-Attributen heraus- und in entsprechende Javascript-Abschnitte hineinzuverlagern:

      <script type="text/javascript">  
        
      [code lang=javascript]function betreff_ersetzen(frm, fld) {  
        if (fld.length > 0) {  
          frm.action = frm.action.replace(/Standardbetreff$/, encodeURIComponent(fld.value));  
        }  
      }
      

      </script>
      [...]
      <form method="post" enctype="text/plain" action="mailto:rosanoda@gmx.de?cc=rosanoda@gmx.de&subject=" name="tp_escalation" onsubmit="betreff_ersetzen(this, document.getElementsByName('Name des Textfeldes')[0]);">
      [/code]

      MfG,
      EKKi

      --
      sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
      1. Argl - jetzt habe ich doch selbst vergessen, den Standardbetreff im Formular anzugeben. Richtig(er) wäre es so:

        <form method="post" enctype="text/plain" action="mailto:rosanoda@gmx.de?cc=rosanoda@gmx.de&subject=Standardbetreff" name="tp_escalation" onsubmit="betreff_ersetzen(this, document.getElementsByName('Name des Textfeldes')[0]);">  
        
        

        MfG,
        EKKi

        --
        sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
        1. <form method="post" enctype="text/plain" action="mailto:rosanoda@gmx.de?cc=rosanoda@gmx.de&subject=Standardbetreff" name="tp_escalation" onsubmit="betreff_ersetzen(this, document.getElementsByName('Name des Textfeldes')[0]);">

            
            
          möchtest du nicht das & vor subject mit &amp; maskieren ;)  
            
          im übrigen: example@example.com als ist als test-mailadresse viel besser geeignet als eine real existierende - gmx hat zwar einen guten spamfilter, aber überstrapazieren würd ich den trotzdem nicht 
          
          1. <form method="post" enctype="text/plain" action="mailto:rosanoda@gmx.de?cc=rosanoda@gmx.de&subject=Standardbetreff" name="tp_escalation" onsubmit="betreff_ersetzen(this, document.getElementsByName('Name des Textfeldes')[0]);">

            
            >   
            >   
            > möchtest du nicht das & vor subject mit &amp; maskieren ;)  
              
            Hallo!  
              
            Entschuldige meine Unwissenheit, aber weshalb muss man das maskieren? Führt das nicht zu einer falschen URI?
            
            1. Entschuldige meine Unwissenheit, aber weshalb muss man das maskieren? Führt das nicht zu einer falschen URI?

              nein, aber ggf zu falschen paramtern ;)
              http://www.w3.org/International/questions/qa-escapes.de.php

              nimm als beispiel folgendens html und teste es zb im firefox, dann wirst du sehen warum man diese dinger kontextspezifisch maskieren muss ;)

                
              <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"  
                  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  
              <html xmlns="http://www.w3.org/1999/xhtml">  
              <head>  
              <title>Entites maskieren</title>  
              </head>  
              <body>  
              <a href="index.php?foo=bar&copy=baz">foobar</a><br />  
              <a href="index.php?foo=bar&amp;copy=baz">foobar</a>  
              </body>  
              </html>
              
      2. Hallo auch!

        Schlechte Idee: wenn der Benutzer kein Javascript aktiviert hat, gibt es gar keinen Betreff. Außerdem halte ich persönlich es für besser, entsprechende Code-Teile erstens in allgemeine Funktionen zu stecken und zweitens aus den HTML-Attributen heraus- und in entsprechende Javascript-Abschnitte hineinzuverlagern:

        Ja, da hast Du im Prinzip recht, aber ich dachte, die Funktion sollte "einfach" sein. Deine Lösung setzt voraus, dass man sich mit regulären Ausdrücken auskennt, was man nicht unbedingt als "einfach" bezeichnen kann.

      3. Hallo Ekki,

        dankeschön an alle .. es funktioniert ... :-)

        Supercool ...

        Greetz

        rosanoda