Josef Reichardt: Formular per EMail versenden.......

Hallo!

Ich bins wieder...
Ich habs immer noch nicht ganz verstanden!
Was mache ich falsch?
Es kommt immer Fehler 500!

Hier ist mein Formular:

<form action="http://www.crusader-mc.de/cgi-bin/send-mail.pl" method="post">
      <input type="hidden" name="mailto" value="webmaster@crusader-mc.de">
      <input type="hidden" name="return" value="http://www.crusader-mc.de/termine/termine.htm">
      <input type="hidden" name="delimiter" value=": ">
      <input type="hidden" name="subject" value="!!!Neuer Termin auf crusader-mc.de!!!">
      <font face="colonna mt,arial" size="5">
       Euer Party-Termin:<br>
      <table><tr><td width="75%">
       <table border="0" width="75%">
        <tr>
         <td width="200">
          <font face="colonna mt,arial" size="4">
           Von<small>(Nur bei Treffen!)</small>:
          </font>
         </td>
         <td>
          <font face="colonna mt,arial" size="3">
           <input type="text" maxlength="10" name="start" style="font-family:colonna mt,arial; font-size:16; color:#c0c0c0; background-image:url(bgformtext.gif); border:2px solid #c0c0c0; width:120">
          </font>
         </td>
        </tr>
        <tr>
         <td>
          <font face="colonna mt,arial" size="4">
           Bis/Am*:
          </font>
         </td>
         <td>
          <font face="colonna mt,arial" size="3">
           <input type="text" maxlength="10" name="end" style="font-family:colonna mt,arial; font-size:16; color:#c0c0c0; background-image:url(bgformtext.gif); border:2px solid #c0c0c0; width:120">
          </font>
         </td>
        </tr>
        <tr>
         <td>
          <font face="colonna mt,arial" size="4">
           Uhrzeit:
          </font>
         </td>
         <td>
          <font face="colonna mt,arial" size="3">
           <input type="text" maxlength="5" name="time" style="font-family:colonna mt,arial; font-size:16; color:#c0c0c0; background-image:url(bgformtext.gif); border:2px solid #c0c0c0; width:120">
          </font>
         </td>
        </tr>
        <tr>
         <td>
          <font face="colonna mt,arial" size="4">
           Veranstalter/Ort*:
          </font>
         </td>
         <td>
          <font face="colonna mt,arial" size="3">
           <input type="text" name="place" style="font-family:colonna mt,arial; font-size:16; color:#c0c0c0; background-image:url(bgformtext.gif); border:2px solid #c0c0c0; width:120">
          </font>
         </td>
        </tr>
        <tr>
         <td>
          <font face="colonna mt,arial" size="4">
           Art*:
          </font>
         </td>
         <td>
          <font face="colonna mt,arial" size="3">
           <select name="type" style="width:120; background-color:#000000; color:#c0c0c0; font-family:colonna mt,arial; font-size:16;">
            <option>   </option>
            <option>Treffen</option>
            <option>Party</option>
            <option>Winterparty</option>
            <option>Sommerparty</option>
            <option>Clubhaus open</option>
           </select>
          </font>
         </td>
        </tr>
       </table>
      </td>
      <td><img src="oldwizard.gif" border="0"></td></tr></table>
<center><input type="submit" value="Eintragen" style="font-family:colonna mt,arial; font-size:16; color:#c0c0c0; background-image:url(bgformtext.gif); border:2px solid #c0c0c0; width:120"><br><br></center>
<font size="3">*:Pflichtfelder   â€¢   Die Aktualisierung kann ein bis zwei Tage dauern!</font>
      </font>
     </form>

...und hier mein formmailer(send-mail.pl):

#!/usr/bin/perl

$Sendmail_Prog = "/usr/lib/sendmail";
use Net::SMTP;
$smtp = Net::SMTP->new('mailhost');
$smtp->mail($ENV{USER});
$smtp->to('mailto');
$smtp->data();
$smtp->datasend("To: mailto\n");
$smtp->datasend("Subject: subject\n");
$smtp->datasend("mailtext\n");
$smtp->dataend();

$smtp->quit;

if (grep { $mailto eq $_ } @all_mailq) {
my @all_mails = ('webmaster@crusader-mc.de', 'info@crusader-mc.de.de');
open(MAIL,"|$Sendmail_Prog -t") || print STDERR "Mailprogramm konnte nicht gestartet werden\n";
print MAIL "To: $mailto\n";
print MAIL "Subject: $subject\n\n";
print MAIL "$mailtext\n";
close(MAIL);
print "Location: $returnhtml\n\n";
} else {
   print "<h1>Nicht erlaubte Emailadresse!</h1>";
}

Bitte um schnelle hilfe, weil das formular aus zeitdruck bereits upgeloadet ist!

MfG

Josef

  1. Hallo Josef,

    was sagt denn das Server-Logfile. In jedem Fall würde ich nach dem Subject eine Leerzeile mit angeben.

    Gruß

    Eidgenosse

    1. Hi,

      was sagt denn das Server-Logfile.

      tut mir leid, wo finde ich diese? ich kenn mich mit servern noch nicht so gut aus, auch in cgi bin ich neu! ich beschäftige mich grad mal ein bis zwei Jahre mit Homepages!

      Josef

  2. hi,

    <input type="hidden" name="mailto" value="webmaster@crusader-mc.de">

    ^^^^^^^^^^^^^^^^

    würde ich nicht so machen! Jeder kann so DEIN Script missbrauchen und SPAM von DEINEM Host aus versenden.

    Rolf

    1. use Mosche;

      <input type="hidden" name="mailto" value="webmaster@crusader-mc.de">
      ^^^^^^^^^^^^^^^^

      würde ich nicht so machen! Jeder kann so DEIN Script missbrauchen und SPAM von DEINEM Host aus versenden.

      Deswegen hat er unten das KOnstrukt mit grep {} in seinem Script, siehe:
      [pref:t=31245&m=169650] und die zugehörige Diskussion.

      use Tschoe qw(Matti);

      --
      $a=n(1001010);print chr($a+=$_)for(0,43,-2,1,-84,65,13,1,5,
      -12,-3,13,-82,48,21,13,-6,-76,72,-7,2,8,-6,13,-104);sub n{
      $b=0;$_=0;for($c=length$_[0];$c;--$c){$_+=_($b)if substr$_
      [0],$c-1,1;$b++;}$_}sub _{($d)=@_;for($e=1;$d--;$e*=2){}$e}
  3. use Mosche;

    Hallo!

    Ich bins wieder...
    Ich habs immer noch nicht ganz verstanden!
    Was mache ich falsch?
    Es kommt immer Fehler 500!

    Da hilft dir dein Logfile oder, wenn du am Anfang deines Scriptes:

    use CGI::Carp qw(fatalsToBrowser);

    schreibst.

    <font face="colonna mt,arial" size="5">

    Warum mixt du durch das gesamte Formular HTML-Style (*böse*) mit CSS? Verwende nur noch CSS!

    #!/usr/bin/perl

    $Sendmail_Prog = "/usr/lib/sendmail";

    Das brauchst du nicht, wenn du Net::SMTP verwendest.

    use Net::SMTP;
    $smtp = Net::SMTP->new('mailhost');
    $smtp->mail($ENV{USER});
    $smtp->to('mailto');
    $smtp->data();
    $smtp->datasend("To: mailto\n");
    $smtp->datasend("Subject: subject\n");
    $smtp->datasend("mailtext\n");
    $smtp->dataend();

    $smtp->quit;

    Das hast du aus meinem Posting einfach rauskopiert. Setze doch mal passende Werte für 'mailhost' (zB 'localhost'), 'mailto' (dein $mailto _nach_ der Prüfung (s.u.)), subject und mailtext ein!

    if (grep { $mailto eq $_ } @all_mailq) {
    my @all_mails = ('webmaster@crusader-mc.de', 'info@crusader-mc.de.de');

    Die Definition des Arrays muss vor der Überprüfung seiner Werte geschehen! Einfach Zeilen umdrehen.

    open(MAIL,"|$Sendmail_Prog -t") || print STDERR "Mailprogramm konnte nicht gestartet werden\n";
    print MAIL "To: $mailto\n";
    print MAIL "Subject: $subject\n\n";
    print MAIL "$mailtext\n";
    close(MAIL);

    Lösche diesen Code, er ist nicht sinnvoll, wenn du Net::SMTP benutzen willst.

    print "<h1>Nicht erlaubte Emailadresse!</h1>";

    davor fehlt  die Ausgabe eines Content-Types:
    print header(); # vor der ersten print anweisung!

    use Tschoe qw(Matti);

    --
    $a=n(1001010);print chr($a+=$_)for(0,43,-2,1,-84,65,13,1,5,
    -12,-3,13,-82,48,21,13,-6,-76,72,-7,2,8,-6,13,-104);sub n{
    $b=0;$_=0;for($c=length$_[0];$c;--$c){$_+=_($b)if substr$_
    [0],$c-1,1;$b++;}$_}sub _{($d)=@_;for($e=1;$d--;$e*=2){}$e}