Marcus Callies: Probleme mit Formmailer unter WIN 2000

Hi,

ich möchte ein für Windows Server modifiziertes Skript (formmail.cgi)
zum Versenden von Formularen verwenden, das nicht über 'sendmail' geht,
sondern direkt über SMTP. Mein Provider sagt nun, ich müsse im Formular
selbst einen festen Absender definieren, der auf dem Server einen Account
hat, ansonsten könne das Formular nicht verschickt werden. In der Doku zum
Skript ist aber nur die Variable der empfängers vorgesehen.
Stimmt die Info des Providers (das skript läuft derzeit nicht) und wie kann
ich das Problem lösen ?

Thanx for any answers.

  1. Hallo,

    Such mal im Script nach der Stelle, wo das Mail zum Versenden zusammengebaut wird.
    Dort findest Du sicherlich eine Ausgabe die irgendwie
    From: sender@nowhere.org
    bzw
    From: $sender
    lautet.

    Hier besteht für Dich Handlungsbedarf.

    Wenn's der erste Fall ist, was ich nicht glaube, dann änder diese Mailadresse in die gewünschte (Deine??).

    Im zweiten Fall suche jene Stelle im Script, wo diese Variable belegt wird. Dann dort ändern.

    Näheres ist schwer zu sagen, da ich ja den Code nicht kenne. (aber poste jetzt nicht den ganzen Code, im Zweifelsfall ist ein Link zum Code besser)

    Grüße
      Klaus

    1. Hallo nochmal,

      Hier einige Ergänzungen zum vorher gesagten:
      (nach Vorlage des Codes, Link wird ev. von Marcus nachgereicht)

      Ich schreibs mal so, wie ich den Code durchgegangen bin.

      Such mal im Script nach der Stelle, wo das Mail zum Versenden zusammengebaut wird.
      Dort findest Du sicherlich eine Ausgabe die irgendwie
      From: sender@nowhere.org
      bzw
      From: $sender
      lautet.

      Ergebnis: Es gibt da 'sub send_mail' Zeile 360-462.
      In Zeile 381 kommt besagte Ausgabe vor:
      $smtp->datasend("From: $Config{'email'} $Config{'realname'}\n");
      und auch in Zeile 371
      $smtp->mail($Config{'email'});

      Das sagt mir, daß alles in einem Hash namens %Config steht.

      Hier besteht für Dich Handlungsbedarf.
      Wenn's der erste Fall ist, was ich nicht glaube, dann änder diese Mailadresse in die gewünschte (Deine??).

      Das war's also nicht, hehehe.

      Im zweiten Fall suche jene Stelle im Script, wo diese Variable belegt wird. Dann dort ändern.

      Also flugs nach dem ersten auftreten von 'Config' gesucht, mit einem vernünftigen Editor ist das ja einfach.
      In Zeile 135ff werde ich fündig (respektive der Editor)

      %Config = ('recipient','',          'subject','',
                     'email','',              'realname','',
                     'redirect','',           'bgcolor','',
                     'background','',         'link_color','',
                     'vlink_color','',        'text_color','',
                     'alink_color','',        'title','',
                     'sort','',               'print_config','',
                     'required','',           'env_report','',
                     'return_link_title','',  'return_link_url','',
                     'print_blank_fields','', 'missing_fields_redirect','');

      Aha, hier werden also die Defaultwerte eingetragen! (das ganze ist in der Funktion parse_form)
      Von vorhin weiß ich, daß 'email' bzw. realname relevant ist. Schaun mer mal.
      Naja, also '' als Absender, dann verstehe ich, warum der Mailserver nicht will.

      Aber sehen wir weiter, vielleicht werden diese Werte ja überschrieben.
      beim Runterscrollen sehe zwar, daß das noch ein Script ist, daß von CGI.pm als Webworkers-best-friend nichts hält, aber was sollst, interessant wird es wieder ab Zeile 189

      if (defined($Config{$name})) {
                  $Config{$name} = $value;
              }

      Hier werden die Defaultwerte bei bedarf anscheinend mit eventuell vorhandenen Werten des aufrufenden HTML-Formular belegt.

      Was sagt uns das alles:
      1.) Ab Zeile 135 sollten vernünftige Werte eingetragen werden, damit es sicherlich klappt.

      2.) Diese Werte können per Formular auch überschrieben werden, beispielsweise mit:
      <input type="hidden" name="email" value="foo@bar.com">

      Grüße
        Klaus

      1. Hallo Klaus,

        tausend Dank für Deine Hilfe und Mühe. Ich hatte bereits auf Verdacht
        versucht, per Formularfeld die Werte 'email' usw. aufzunehmen, dass klappte
        aber irgendwie nicht.

        P.S.: Für andere, die evtl. das gleiche Problem haben: Der Code liegt unter

        http://staff-www.uni-marburg.de/~callies/mail.txt

        Gruss und Dank
        Marcus