xNeTworKx: Wie genau funktioniert das senden beim smpt ?

Hallo,
Ich versteh leider nicht ganz, wie ich dieses Modul NET::SMTP verwenden muss, daß ich das email bekomme. Momentan sieht mein Konstrukt so aus:
#!/usr/bin/perl -w

use Net::SMTP;

$smtp = Net::SMTP->new('mailhost');
    $smtp->to('zumir@chello.at');
    $smtp->data();
    $smtp->datasend("To: zumir@chello.at\n");
    $smtp->datasend("\n");
    $smtp->datasend("A simple test message\n");
    $smtp->dataend();

$smtp->quit;

Wenn ich es jetzt von der Eingabeaufforderung starte, arbeitet er zwar was, aber ich bekomme leider kein Mail. Wie genau muss ich das ändern ?
Das Bsp. von perldoc.com hilft mir auch nicht viel weiter. Da ist nur dieses Beispiel mit send to postmaster, wobei ich aber nicht weis wie ich das ändern muss.
Mit dem ersten Beispiel auf perldoc.com kann ich mir den mailhost ausgeben lassen:
#!/usr/local/bin/perl -w

use Net::SMTP;

$smtp = Net::SMTP->new('mailhost');
    print $smtp->domain,"\n";
    $smtp->quit;

Jetzt bin ich aber noch mehr verwirrt, weil ich dachte, daß ich zB smtp.chello.at als mailhost verwenden muss. Was ich als Ausgabe bekomme ist : viefep(+irgendeinenummer)-int.chello.at
Wie kann ich nun ein mail mit smtp verschicken ?

  1. Hallo,

    aus der POD zu NET::SMTP:

    <quote>
    new Net::SMTP [ HOST, ] [ OPTIONS ]

    This is the constructor for a new Net::SMTP object. HOST is the name of the remote host to which a SMTP connection is required.
    If HOST is not given, then the SMTP_Host specified in Net::Config will be used.

    OPTIONS are passed in a hash like fashion, using key and value pairs. Possible options are:

    Hello - SMTP requires that you identify yourself. This option specifies a string to pass as your mail domain. If not given a guess will be taken.

    Timeout - Maximum time, in seconds, to wait for a response from the SMTP server (default: 120)

    Debug - Enable debugging information

    Example:

    $smtp = Net::SMTP->new('mailhost',
                               Hello => 'my.mail.domain'
                               Timeout => 30,
                               Debug   => 1,
                              );

    </quote>

    Besonders spannend ist imo die Passage "HOST is the name of the remote host to which a SMTP connection is required." -> bei Dir steht dort der Platzhalter 'mailhost'.

    Grüße
       K@rl

    1. Hi,

      ich hab das jetzt so geändert, aber er will noch immer nicht ganz. Warum bekomm ich da immer Fehlermeldungen ?
      #!/usr/bin/perl -w

      use Net::SMTP;

      $smtp = Net::SMTP->new('smtp.chello.at',
            Hello => 'mir@chello.at',
            Timeout => 30,
                     Debug => 1);
          $smtp->to('mir@chello.at');
          $smtp->data();
          $smtp->datasend("To: mir@chello.at\n");
          $smtp->datasend("\n");
          $smtp->datasend("A simple test message\n");
          $smtp->dataend();

      $smtp->quit;

      Selbst wenn ich vor den @ jeweils ein \ setzt, nützt es auch nichts. Ich hab mal den Ausschnitt von der Eingabe beigefügt

      1. Hallo Networkx,

        sorry, kann ich Dir ad hoc auch nicht weiter helfen, da ich immer mit MIME::Lite meine Mails erzeuge und da funzt es mit
            MIME::Lite->send('smtp', "eine-domain.de", Timeout=>60)
        tatallos.

        Also, Alternative 1: gründliches RTFM von NET::SMTP
        oder Alternative 2: verwende MIME::Lite - kann ich Dir nur empfehlen. http://forum.de.selfhtml.org/archiv/2002/4/8982/#m49712

        K@rl

        1. Hi,
          danke, werds gleich mal damit versuchen. Was ich noch wissen wollte : Warum sollte man das sendmail des Servers eigentlich nicht verwenden ? Deswegen tu ich mir das Ganze hier eigentlich an, weil ich gehört habe, daß man besser mit smtp, oder wie du sagst mit MIME::LIte verschicken soll, aber warum ?

          1. Hi

            danke, werds gleich mal damit versuchen. Was ich noch wissen wollte : Warum sollte man das sendmail des Servers eigentlich nicht verwenden ?

            Die Frage kann *ich* Dir auch nicht beantworten. Es ist nämlich usus und anerkannte Best Practice in der Perl-Unix-Welt sendmail zu verwenden (auf meinem Server z.B. kann ich auch guten = Sicherheits- Gründen SMTP garnicht ausführen).

            Deswegen tu ich mir das Ganze hier eigentlich an, weil ich gehört habe, daß man besser mit smtp, oder wie du sagst mit MIME::LIte verschicken soll, aber warum ?

            MIME::Lite verwendet intern walweise sendmail oder Net::SMPT - siehe Doku. Default ist, sendmail zu verwenden - imo spricht das ja wohl für sich.

            Frag doch mal denjenigen, der dir die Story vom Elch von wegen Net::SMTP verwenden erzählt hat, warum nungenau. Würde mich auch mal interessieren!

            Grüße
               K@rl

            1. Hoi,

              auf meinem Server z.B. kann ich auch guten = Sicherheits- Gründen
              SMTP garnicht ausführen

              Entschuldige, aber das ist einfach nur ein sinnfreier Satz. SMTP ist
              ein Protokoll, da kann nichts ausgefuehrt werden. Wenn du meinst, dein
              ISP hat SMTP gesperrt, dann wage ich das ehrlich gesagt zu bezweifeln.
              Ich kann mir eher vorstellen, dass er einfach nur kein open relay
              konfiguriert hat.

              Gruesse,
               c.j.k

              1. Hoi cjk,

                SMTP ist ein Protokoll, da kann nichts ausgefuehrt werden.

                Jawohl Herr Oberlehrer. Soll nicht wieder vorkommen Herr Oberlehrer.

                Grüße
                   K@rl

      2. Hallo,

        ich hab das jetzt so geändert, aber er will noch immer nicht ganz. Warum bekomm ich da immer Fehlermeldungen ?

        Und warum studierst Du die Fehlermeldungen nicht?;-)

        Was will Dir z.B.:
        503 Bas sequence of commands (specify MAIL first)
        bzw.
        503 No sender
        sagen?

        Erstere Meldung taucht auf, weil Du kein
        $smtp->mail('dein_abesender@chello.at');
        benutzt hast, zweitere wird da wohl ein Folgefehler sein.
        Ich würde aber auch ein 'From: dein_absender@chello.at' und irgendein Subject mitsenden, aber das ist dann ja nur mehr Kosmetik;-)

        Auf die (in einem späteren Posting gestellte) Frage, warum Du nihct sendmail benutzen sollst, kann ich Dir nur meine Meinung sagen. Ich finde die Lösung, welche nur mit Perl arbeitet insofern besser, weil es auch auf Systemen läuft, welche über kein lokales sendmail verfügen, sei es, weil es dafür keines gibt, oder weil es nicht installiert wurde.

        Grüße
          Klaus

        1. Hallo,
          danke, jetzt klappts, auf das wär ich gar nicht gekommen, weil ich dachte, daß es nur speziell bei diesem einen Beispiel auf perldoc.com zu sehen war.

          1. Hoi,

            danke, jetzt klappts, auf das wär ich gar nicht gekommen, weil ich
            dachte, daß es nur speziell bei diesem einen Beispiel auf
            perldoc.com zu sehen war.

            Net::SMTP ist lediglich ein Wrapper fuer das SMTP-Protokoll (wie der
            Name auch schon sagt). Du haettest den Fehler schnell gefunden,
            wenn du dir die RFC821 (ftp://ftp.isi.edu/in-notes/rfc821.txt)
            angesehen haettest.

            Gruesse,
             c.j.k