Mark: sendmail Alternative für Windows gesucht..

Hallo !

Ich suche eine (für Perl) alternative zu sendmail für mein WAMP. Ich habe mir mal das NT:SMTP von Graham Barr angeschaut, aber damit komm ich irgendwie überhaupt nicht klar.

Was nutzt Ihr für den Emailversand unter Perl?

Gruß
Mark

  1. Hi,

    Ich suche eine (für Perl) alternative zu sendmail für mein WAMP. Ich habe mir mal das NT:SMTP von Graham Barr angeschaut, aber damit komm ich irgendwie überhaupt nicht klar.

    Was nutzt Ihr für den Emailversand unter Perl?

    darf ich mich redundanterweise anschliessen?   ;-)

    Gruss,
    Lude

    ---
    "Doof bist nicht Du, sondern die Gesellschaft."

    1. Hi,

      Ich suche eine (für Perl) alternative zu sendmail für mein WAMP. Ich habe mir mal das NT:SMTP von Graham Barr angeschaut, aber damit komm ich irgendwie überhaupt nicht klar.

      Was nutzt Ihr für den Emailversand unter Perl?

      darf ich mich redundanterweise anschliessen?   ;-)

      siehe weiter oben.

      Eine kleine Ergänzung: Such mal auf den üblichen DownloadSites nach mail64 - das ist ein SMTP Server für windows der auch POP3 kann.

      Diesen Server verwende ich zum Testen von PERL Scripts mit Net::SMTP auf windows- PC (localhost, port 25). POP3 ist dabei von Vorteil, da kannst du gleich schauen ob die Mail "angekommen" ist (POP3 auf localhost, poer 110)

      Erwin

      Rechtschreipung selwer gebrieft ;-)

      --
      SELFforum - Das Tor zur Welt!
      Theoretiker: Wie kommt das Kupfer in die Leitung?
      Praktiker: Wie kommt der Strom in die Leitung?
  2. Hallo !

    Ich suche eine (für Perl) alternative zu sendmail für mein WAMP. Ich habe mir mal das NT:SMTP von Graham Barr angeschaut, aber damit komm ich irgendwie überhaupt nicht klar.

    Was nutzt Ihr für den Emailversand unter Perl?

    Net::SMTP; # ;-)

    Du brauchst einen Postausgangsserver, falls der auf dem localhost nicht läuft, nimm einfach den SMTP Gateway von deinem Provider (oder einen anderen der erreichbar ist und über den du relay'en darfst)

    Diesen Server gibst du bei der Objekterstellung an.

    Erwin

    =beispiel
    #!/usr/bin/perl

    ###########################################################################
    ###########################################################################

    Konfiguration des Scripts

    eMail - Adresse Empfaenger, bitte einfache Hochkomma

    $to = 'rosti@vr-web.de';

    Bestaetigungsseite

    $confirm = 'http://home.vr-web.de/~rolfrost/confirm.html';
    ###########################################################################

    Optionale Konfiguration

    Postausgangsserver, Hostname eines Rechners mit sendmail, postfix o.ae.

    Normalerweise ist das der localhost und muss nicht geaendet werden

    $host = 'localhost';

    ###########################################################################

    Ende der Konfiguration

    ###########################################################################
    ###########################################################################

    use strict;
    use vars qw($to $host $confirm);
    use subs qw(compute abbruch);
    use CGI 'param';
    use Net::SMTP;

    compute;

    exit;
    ###########################################################################

    Funktionen

    ###########################################################################

    SMTP_Mail senden

    sub mail{
     # needs 5 or 6 arguments
     my ($smtp_host, $rcpt, $subject, $msg, $abs_email, $abs_name) = @_;
     my $from = ();

    if($abs_name){ $from = "$abs_name <$abs_email>" }
     else{ $from = "<$abs_email>"}

    # Neues Objekt erstellen
     my $s = new Net::SMTP($smtp_host);

    # format the message
     my $message = <<"--MSG";
    From: $from
    To: <$rcpt>
    Subject: $subject

    $msg

    --MSG

    # Ab geht die Post        # dem SMTP Protocol entsprechendes Kommando
     $s->mail($abs_email);  # mail from:roro@local
     $s->to( $rcpt );       # rcpt to:otto@local
     $s->data( $message );  # data: eintippen der message, abschluss mit einem Punkt
     $s->quit();            # quit
     return 1;
    }
    ###########################################################################

    Die Abbruchfunktion

    sub abbruch{
     print "Content-type: text/html\n\n";
     print qq(
      <h1>$_[0]</h1>
      <p>
      $_[1]
     );
     exit;
    }
    ###########################################################################

    Die Hauptfunkion, es werden Pruefungen gemacht:

    1. Wurden die richtigen Feldnamen verwendet?

    2. Ist der angegebene Postausgangsserver verfuegbar (port 25 offen)?

    3. Ist jedes Eingabefeld ausgefuellt?

    sub compute{
     # Kontrolle der verwendeten Paramaternamen, diese Namen muss es geben
     my %control = (
      'from', 1,
      'name', 1,
      'subject',1,
      'text',1,
     );
     my @names = param;
     my $names = join "<br>", @names;
     foreach my $name(@names){
      if(not $control{$name}){
       abbruch("Konfigurationsfehler","Falscher oder fehlender Parameter, bitte die Feldnamen from, name, subject und text verwenden, siehe Beschreibung im Script. Verwendet wurden die Feldnamen:<p>$names ");
      }
     }

    # Testen des Postausgangsservers auf Port 25
     my $client_sock = new IO::Socket::INET (
      PeerAddr => $host,
      PeerPort => 25,
      Proto    => 'tcp') or abbruch "Konfiguration oder Socketfehler","Der eingetragene Postausgangsserver $host ist an Port 25 nicht offen";
     $client_sock->close();

    # Nun die Parameter einlesen
     my $from = param 'from' or abbruch "Fehleingabe","eMail ist erforderlich, Backbutton...";
     my $name = param 'name' or abbruch "Fehleingabe","Name ist erforderlich, Backbutton...";
     my $subject = param 'subject' or abbruch "Fehleingabe","Betreff ist erforderlich, Backbutton...";
     my $text = param 'text' or abbruch "Fehleingabe","Text ist erforderlich, Backbutton...";

    # Mail wird nun gesendet
     mail($host,$to,$subject,$text,$from,$name) or abbruch "Fehler","Die Mail wurde nicht gesendet, moeglicherweise steht das Modul Net::SMTP nicht zur Verfuegung oder es wurde ein nicht funktionaler Postausgangsserver eingetragen.";

    # Umleitung zu Bestaetigung
     redir($confirm);
    }

    ###########################################################################

    entfernt Leerzeichen am Anfang und am Ende eines Strings

    Auch Tabulatoren

    sub trim{
     my $s = shift;
     $s =~ s/^\s+|\s+$//g;
     return $s;
    }

    ###########################################################################

    Redirection

    sub redir{
            my $url = shift;
            print "Status: 302 Moved\n";
            print "location: $url\n\n";
    }
    ###########################################################################

    --
    SELFforum - Das Tor zur Welt!
    Theoretiker: Wie kommt das Kupfer in die Leitung?
    Praktiker: Wie kommt der Strom in die Leitung?