Rolf: InputFile bei Mail::Sender

Hallo Forumer,

mit dem Modul "Mail::Sender" http://www.i-netlab.de/pop3/pop3.htmff. ist es ja recht einfach, CGIs zu schreiben, welche das Versenden von Mails an eine beliebige Mailadresse ermöglichen. Bedingung: Der Name des SMTP-Hosts muss bekannt sein, was ist das? Jede InternetMail geht über das Protokoll "SMTP" an einen Host welcher an Port25 lauscht. Zur Idendifizierung des SMTP-Hosts wird der sogenannte MX-Record im DNS herangezogen http://www.netplanet.orgff. (danke Besim!). So kann dieser Record auch mit einem PERL-Script abgefragt werden, siehe dazu Michael Schilli's Script "mx.pl", sucht mal auf http://www.perlmeister.com. Ergo ergeben sich für "yahoo.com" 2 Einträge: "mx1.mail.yahoo.com" und "mx2.mail.yahoo.com" das sind also die beiden SMTP-Hosts welche für das Empfangen von Emails an "xyz_name@yahoo.com" zuständig sind.

Doch genug der Vorrede. Mein CGI mit "InputFile" (form enctype='multipart/form-data') funktioniert einwandfrei solange ich es auf meiner lokalen Kiste über einen lokalen WebServer betreibe, über FileInput kann ich beliebige Dateien an Mails dranhängen und an "rolfrost@yahoo.com" verschicken. Rufe ich dieses CGI jedoch auf dem Server meines Providers auf funktioniert die Auswahl der Datei nicht mehr: Es kann zwar eine Datei mit lokalem Pfad und Namen ausgewählt werden jedoch das Modul sucht beispielsweise eine "c:\windows\desktop\xxl.zip" auf der Kiste wo es läuft... also auf dem LinuxRechner meines Providers. Wie kann ich das Modul "Mail::Sender" http://jenda.krynicky.cz/ dazu bringen, dass die anzuhängende Datei auf _meinem lokalem Rechner_ genommen wird?

Wie auch immer, ein schönes Wochenende, euer Rolf

  1. Hi,

    ich bin nicht ganz sicher, ob ich Deine Frage jetzt richtig auf das wesentliche reduziere, aber ich versuch's einfach mal:

    Wie kann ich das Modul "Mail::Sender" http://jenda.krynicky.cz/ dazu bringen, dass die anzuhängende Datei auf _meinem lokalem Rechner_ genommen wird?

    Gar nicht?
    Das Modul benötigt die Daten, die es anhängen soll nun mal. Das heißt, Du mußt sie beim HTTP-Request mitschicken, über <input type=file>, denn Zugriff auf den anfragenden Rechner erlaubt HTTP nicht.

    Nachdem Du die Datei dann mitgeschickt hast, kannst Du sie mit dem Modul CGI.pm z.B. temporär abspeichern und für das Modul benutzen. Wie das geht, findest Du im Forums-Archiv und in

    perldoc CGI

    Cheatah

    1. Moin Hajo,

      im Prinzip musses so gemacht werden wie Du sagst: erst ein Upload und dann die hochgeladene Datei an die Methode "file" übergeben:
      ---
      $sender = new Mail::Sender{smtp => 'mailserver', from => $name};
      ref($sender->MailFile(
      {to => 'otto@local',  
      subject => $betreff,
      msg => $text,
      file => $datei}
      ))&fehler;
      $sender->Close;
      ---
      Meth. file erwartet eine Datei auf dem lokalem Rechner also so was in der art $datei = "/home/i-netlab.de/htdocs/inetlab.gif";... ok das geht alles zu machen. Mir gings eigentlich nur darum, von "sendmail" wegzukommen und vorerst reicht für meine Zwecke das hier:http://www.i-netlab.de/cgi-bin/msend.cgi, kannsts ja mal ausprobieren.

      Viele Grüße, Rolf

      PS: http://www.i-netlab.de/cgipm/cgi.htm mit freundlicher Genehmigung des O'Reilly Verlages hab ichs auf meinen Server gespiegelt....