Stefan Sieder: Probleme mit Mailscript

Hi,

ich suche ein Tutorial in dem Beschrieben wird wie man ein Mailscript schreibt. Meine eigenen Versuche werden von unserem UnixServer immer verrissen mit einem netten "Internal Server Error".

Von einem Formular werden einige Daten übergeben und die sollen dann via EMail an eine bestimmte Person (immer die selbe) gesendet werden.

open (MAIL," /usr/sbin/sendmail -t");
print MAIL "To: vail@gmx.net\n";
print MAIL "From: $in{'Nachname'}\n";
print MAIL "X-Mailer: Perl Powered Socket Mailer\n";
print MAIL "Subject: Weinbestellung\n\n";
print MAIL "Besteller:\t $in{'Vorname'} \t $in{'Nachname'}\n $in{'Firma'}\n $in{'EMail'}\n $in{'Kommentar'}\n";
print MAIL "\n.\n";
close(MAIL);

Vielleicht kann mir ja auch jemand einen Tip geben was hierdran falsch ist.

mfg
Stefan Sieder

  1. Hi,

    ich suche ein Tutorial in dem Beschrieben wird wie man ein Mailscript schreibt. Meine eigenen Versuche werden von unserem UnixServer immer verrissen mit einem netten "Internal Server Error".

    Hi Stefan,

    ich sehe zwar nicht dirket den Fehler, aber ich hätte zwei Tips. Als allererstes im Skript
    solltest Du die Fehlerausgabe des Servers auf die Standardausgabe umlenken, dann kannst
    Du's lesen und brauchst Dich nicht jedes Mal über ein nichtssagendes Error500 aufregen.

    Also:

    $=1; print "Content-type: text/plain\n\n";
    open(STDERR, ">&STDOUT") print "(Could't dupe STDERR to STDOUT!)\n\n";

    So, und nun kann ich Dir mit Deinem eigenen Problem nur insoweit helfen, dass ich Dir ein
    Code-Snippet gebe, das bei mir auf jeden Fall funktioniert. (Vielleicht, das scheint mir der
    einzige Unterschied, ist Dein Pfad zu sendmail falsch?!)

    $mailprog = '/usr/lib/sendmail';
    $mail_text = "To: $config{'recipient'}\n" . "X-Mailer: jSh.FormMail\n"
    ."Subject: ". ($config{'subject'} ? $config{'subject'} : "jSh.FormMail submission") ."\n\n"
    ."This data was submitted on ". scalar(localtime) ."\n";
    $mail_text .= "from ". $ENV{'HTTP_REFERER'} ."\n" if $ENV{'HTTP_REFERER'};
    $mail_text .= "\n". "-" x 75 ."\n\n";
    foreach $field (@fields) {
    if ($form{$field} $form{$field} eq '0') { $mail_text .= "$field: $form{$field}\n\n"; }}
    $mail_text .= "-" x 75 ."\n\n";

    open(MAIL,"$mailprog -t") &error('mail_prg'); # open mail program
    print MAIL $mail_text;
    close (MAIL);

    Schönen Gruß und viel Spaß weiter beim Mail-Debuggen.

  2. Hallo Stefan

    »»  print MAIL "To: vail@gmx.net\n";
    Hier ist der Fehler, du musst das @-Zeichen maskieren, also @.

    »»  print MAIL "\n.\n";
    Diese Zeile kannst du weglassen, da sendmail das Ende der E-Mail durch close(MAIL); erkennt.

    Gruss
    Andreas