Perl

Wie kann ich beim Versenden einer E-Mail durch ein Perl-Script die Absenderadresse der E-Mail angeben?

Um eine E-Mail aus Perl heraus zu versenden wird in der Regel das Sendmail-Programm aufgerufen. Sendmail kann beim Aufruf eine Absenderadresse mit der Option -f übergeben werden:

$Sendmail_Prog = "/usr/lib/sendmail -femail\@adresse.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);

Warum kann ich mein Perl-Script nicht ausführen?

Probleme können folgende Ursachen haben

  • bei der FTP-Übertragung sollte der ASCII-Mode eingeschaltet sein
  • ist das Script ausführbar?
  • stimmen die Pfade?
  • darf der Webserver das Script lesen und ausführen (Dateiberechtigung sollte auf 755 bzw. rwxr-xr-x gesetzt sein)?
  • sind die benötigten Funktionsbibliotheken verfügbar?
  • stimmt der Pfad zum Perl Interpreter (/usr/bin/perl)
  • wird der richtige Content-Type ausgegeben (z.B. print "Content-Type: text/html\n\n")

Welche Perl-Bibliotheken sind installiert?

  • Apache::DBI
  • AppConfig
  • Bundle::LWP
  • DBD::mysql
  • DBI
  • Devel::Symdump
  • GD
  • HTML::Parser
  • HTML::Tagset
  • IO-stringy
  • Image::Size
  • Mail::Sendmail
  • OLE::Storage_Lite
  • PDF::Create
  • Spreadsheet::ParseExcel
  • Template
  • Unicode::String
  • URI
  • XML::NamespaceSupport
  • XML::Parser
  • XML::SAX
  • XML::Writer
  • XML::XPath
  • mod_perl

Wie kann ich die Perl-Fehlermeldungen sichtbar machen?

In einer CGI-Umgebung werden die Ausgaben von STDERR in das Fehler-Logfile des Webservers umgeleitet. Nur STDIN und STDOUT werden auf den Browser geleitet. Um Fehlermeldungen nach STDOUT ausgeben zu können, kann man folgenden "Trick" nutzen (nach Ausgabe der HTTP-Headers):

open (STDERR, ">&STDOUT");

Dadurch werden alle Fehlermeldungen nach STDOUT (also dem Browser) ausgegeben. In produktiven Umgebungen sollte diese Umleitung wieder entfernt werden.

Suche

Service

Hotline: 0800 0101600
Fax: 0800 3684283
Vorweg gehen