Forum Doku Wiki Blog

Forumsarchiv 1999, Mai
Mails mit Perl verschicken.

archivierte Beiträge lesen

  1. (PERL) Mails mit Perl verschicken. von Sebastian Krysmanski, 19. 05. 1999, 21:55

Mails mit Perl verschicken.

Der folgende Beitrag wurde am 19. 05. 1999, 21:55 Uhr von Sebastian Krysmanski veröffentlicht.

1. Ich habe mir zwar den Text zum Thema "Verschicken von Emails mit Perl" durchgelesen, aber bei mir funktioniert das nicht. Die Nachricht kommt bei mir nicht an, obwohl ich das Beispiel so kopiert habe, wie es da stand. Der Server meldet auch keinen Fehlen. Wer kann mir helfen? Das Script sieht folgendermaßen aus:

#!/usr/bin/perl

if($ENV{'REQUEST_METHOD'} eq 'GET')
{
  $Daten = $ENV{'QUERY_STRING'};
}
else
{
  read(STDIN, $Daten, $ENV{'CONTENT_LENGTH'});
}

$i=0;
@namen = ("");
@Formular = ("");

@Formularfelder = split(/&/, $Daten);
foreach $Feld (@Formularfelder)  
{
  ($name, $value) = split(/=/, $Feld);  
  $value =~ tr/+/ /;
  $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
  $value =~ s/<!--(.\n)*-->//g;      
  $namen[$i] = $name;  
  $Formular[$i] = $value;  
  $i = $i + 1;
}

if (@namen[0] eq "mailto" && @namen[1] eq "subject" && @namen[2] eq "mailfrom" && @namen[3] eq "meldung")
{

     $Mailprogramm = "/usr/sbin/sendmail";  # Pfad des Mailprogrammes

     $MailSubject = "Testmail";
     $Empfaenger = "lordb\@online.de";
      $SenderName = "LordB";
$SenderMail = "lordb\@online.de";

open(MAIL,"$Mailprogramm -t") &mailer;

print MAIL "To: $Empfaenger\n";
print MAIL "From: $SenderMail $SenderName\n";
print MAIL "Subject: $MailSubject\n\n";

print MAIL "LordB FormMailer\n";
print MAIL "-----------------------------------------------------------\n\n";

$max = $i;
for($i=4;$i<=$max;$i++)
{
print MAIL "$namen[$i] :        $Formular[$i]\n";
}
close(MAIL);

print "Content-type: text/html\n\n";
print "<HTML><HEAD><TITLE>Danke</TITLE></HEAD>\n";
print "<BODY BGCOLOR=#FFFFFF leftmargin=0 topmargin=170>\n";
print "<layer left=0 top=49% width=100%><FONT SIZE=6><CENTER>\n";
print "To: $Empfaenger \n";
print "From: $SenderName \n";
print "Subject: $MailSubject \n\n";


print @Formular[3],"<p>\n";
print "<A HREF=\"javascript:history.back()\"> Zurück </A>\n";
print "</CENTER></FONT></LAYER></BODY></HTML>\n";
}
else
{
   print "Bitte überprüfen sie die Namen der ersten 4 Formularfelder\n";
   goto ende;
}

sub mailer
{
print "Mailprogramm konnte nicht ausgeführt werden. Bitte melden ...\n";
goto ende;
}

ende:

2. Ich habe nur den Mailteil in mein Script genommen, bekomme aber nur eine Fehlermeldung. Wenn ich das Script aber offline teste, bekomme ich nur den Fehler, dass der Interpreter das Mailprogramm nicht finden konnt. Was soll ich tun? Hier für ist der CODE:

#!/usr/bin/perl

@Formular = ("test1","test2","name","sebastian");

$Mailprogramm = "/usr/sbin/sendmail";
$MailSubject = "Formluar-Feedback";   # siehe Erläuterung unten
$Empfaenger = "lordb\@online.de"; # siehe Erläuterung unten
$SenderName = "LordB";           # siehe Erläuterung unten
$SenderMail = "lordb\@bigfoot.de";           # siehe Erläuterung unten

print $SenderMail;

open(MAIL,"$Mailprogramm -t") die;
print MAIL "To: $Empfaenger\n";
print MAIL "From: $SenderMail $SenderName\n";
print MAIL "Subject: $MailSubject\n\n";

$i = 0;
$max = $#Formular;
for($i=0;$i<=$max;$i=$i+2)
{
print MAIL "$Formular[$i]: $Formular[$i+1]\n";
}
close(MAIL);

print "Fertig";

Der Pfad für das Mailprogramm ist aber richtig.

WER KANN MIR HELFEN? Ich weiss, dass man sich erst reinfinden muss, aber ich würde mich auf eine Antwort freuen!

Mails mit Perl verschicken.

Der folgende Beitrag wurde am 19. 05. 1999, 22:14 Uhr von Cheatah veröffentlicht.

Hi,

Dein Problem hat vermutlich gar nichts mit der Anwendung zu tun. Du begehst einen klassischen ('tschuldigung) Anfängerfehler! Nämlich:

> #!/usr/bin/perl
>
[...]
>
> print $SenderMail;

500 Internal Server Error.

Weißt Du, warum? Ganz einfach: Der Content-type fehlt ;-)
Setz den mal rein und probier es noch mal. Ansonsten teste es per Telnet mal mit "perl -c script.pl"

Cheatah

Mails mit Perl verschicken.

Der folgende Beitrag wurde am 20. 05. 1999, 08:48 Uhr von Christian Schnagl veröffentlicht.

Hallo Sebastian,

das Problem liegt wohl hier:

> for($i=4;$i<=$max;$i++)
> {
»»  print MAIL "$namen[$i] :        $Formular[$i]\n";
> }


Bei mir werden mails nicht versendet, wenn im Mailtext ein Doppelpunkt vorkommt. Nimm Ihn mal hier raus. Ich nehme an es liegt an folgendem:

To: wird als Empfänger interpretiert
From: als Sender
Subject: als Betreff
etc...

Vieleicht versucht das Mailprogramm dann die Anweisung
  Sebastian:
auch zu interpretieren....

Ich habe einfach ohne Doppelpunkte (ausser bei to, from, etc..) gearbeitet, und es ging!

Gruß

Christian Schnagl

Mails mit Perl verschicken.

Der folgende Beitrag wurde am 20. 05. 1999, 09:49 Uhr von Cheatah veröffentlicht.

Hi,

> Bei mir werden mails nicht versendet, wenn im Mailtext ein Doppelpunkt vorkommt. Nimm Ihn mal hier raus. Ich nehme an es liegt an folgendem:
>
> To: wird als Empfänger interpretiert
> From: als Sender
> Subject: als Betreff
> etc...
>
> Vieleicht versucht das Mailprogramm dann die Anweisung
>   Sebastian:
> auch zu interpretieren....

das glaube ich eigentlich nicht, weil zwischendrin der Header mit "\n\n" beendet wurde. Der Rest wird als Body der Message interpretiert.

Cheatah

© 1998-2013 SELFHTMLImpressumSoftware: Classic Forum 3.4