Kurti: Warum bei Mailversand redundante Angabe nötig?

Hallo,
beim nachstehenden Programm erhalte ich kein mail zugestellt.

  
   if (!open (MAIL, "|$mail_Prog"))  
     {  
          # Abbruch  
     }  
   print MAIL <<EOT1;  
From: $mail_from  
To: $mail_to  
Subject: Neuer Eintrag im Gästebuch  
Content-type: text/html  
  
.....  
EOT  
  

Wenn ich aber im open zusätzlich "$mail_from" angebe, also

  
   if (!open (MAIL, "|$mail_Prog $mail_from"))  

so kommt das mail an.
Warum muss "$mail_from" doppelt angegeben werden?

  1. Warum muss "$mail_from" doppelt angegeben werden?

    Ich vermute mal, das liegt an der Konfiguration des Mailprogramms.

    Struppi.

  2. Hallo,
    beim nachstehenden Programm erhalte ich kein mail zugestellt.

    if (!open (MAIL, "|$mail_Prog"))
         {
              # Abbruch
         }
       print MAIL <<EOT1;
    From: $mail_from
    To: $mail_to
    Subject: Neuer Eintrag im Gästebuch

    Hier solltest du das Modul Encode verwenden.

    use Encode qw/encode decode/;
    $header = encode('MIME-Header', "Neuer Eintrag im Gästebuch");

    Es wird erwartet, dass der Text bereits in UTF-8 oder iso 8859-1 vorliegt.
    Wenn nicht, muss die Angabe vorher noch zusätzlich kodiert werden.

    Content-type: text/html

    Nein. Bei einer normalen Mail sollte das Format text/plain sein.
    Zudem sollte das Encoding angegeben werden.

    .....
    EOT

    
    >   
    > Wenn ich aber im open zusätzlich "$mail\_from" angebe, also  
    > ~~~perl
      
    
    >    if (!open (MAIL, "|$mail_Prog $mail_from"))  
    > 
    
    

    so kommt das mail an.
    Warum muss "$mail_from" doppelt angegeben werden?

    Würdest du mich bitte zuerst aufklären, was in $mail_Prog steht?
    Meine Glaskugel ist etwas taub

    bei Sendmail hat man typischerweise
    open(MAIL, "|usr/sbin/sendmail -oi -t")
       or die("Sendmail unerreichbar $!");
    -t besagt, das from wird aus dem folgenden print MAIL entnommen.

    mfg Beat

    --
    ><o(((°>           ><o(((°>
       <°)))o><                     ><o(((°>o
    Der Valigator leibt diese Fische
    1. Hallo,
      danke für die Hilfe.

      Subject: Neuer Eintrag im Gästebuch

      Hier solltest du das Modul Encode verwenden.

      Zu meinem Verständnis:
      Warum das Encode? Wegen dem Umlaut?

      Content-type: text/html

      Nein. Bei einer normalen Mail sollte das Format text/plain sein.
      Zudem sollte das Encoding angegeben werden.

      Du meinst den mail-Text auch codieren? Grund, wie oben?

      Würdest du mich bitte zuerst aufklären, was in $mail_Prog steht?

      Dort steht in der Internet-Version
          open(MAIL, "|usr/sbin/sendmail")

      -t besagt, das from wird aus dem folgenden print MAIL entnommen.

      Damit ist meine ursprüngliche Frage geklärt!

      Ich habe jetzt nochmals in Selfhtml nachgeschaut
      (http://de.selfhtml.org/navigation/suche/index.htm?Suchanfrage=sendmail). Da ist kein Encoding
      angegeben. Und leider sind auch die Parameter oi und t nicht beschrieben.
      Hast Du zufällig eine deutsche (einfache) Quelle, wo dies beschrieben ist?
      Danke im voraus
      Kurti

      1. Zu meinem Verständnis:
        Warum das Encode? Wegen dem Umlaut?

        Mailheader dürfen nur ASCII-Zeichen enthalten.

        Content-type: text/html

        Nein. Bei einer normalen Mail sollte das Format text/plain sein.
        Zudem sollte das Encoding angegeben werden.
        Du meinst den mail-Text auch codieren? Grund, wie oben?

        Ein Encoding ist immer präsent.
        Du musst ja bei HTML Output auch das Encoding angeben.
        Formularinhalt wird dir entsprechend des Encodings angegeben.
        Dieses Encoding musst du als charset angabe im Content-Type der als Mailheader angeben.

        Würdest du mich bitte zuerst aufklären, was in $mail_Prog steht?

        Dort steht in der Internet-Version
            open(MAIL, "|usr/sbin/sendmail")

        -t besagt, das from wird aus dem folgenden print MAIL entnommen.
        Damit ist meine ursprüngliche Frage geklärt!

        Ich habe jetzt nochmals in Selfhtml nachgeschaut
        (http://de.selfhtml.org/navigation/suche/index.htm?Suchanfrage=sendmail). Da ist kein Encoding
        angegeben. Und leider sind auch die Parameter oi und t nicht beschrieben.

        Schmeiss das weg. Das ist ein Programm zum abgwöhnen.
        Dummerweise habe ich meine eigene Demo vom Netz genommen, weil eine Server-Migration ansteht.
        In der Demo ist alles geklärt, inklusive dem Versand ohne verfügbares sendmail.
        Aber das hilft dir jetzt nicht.

        Hast Du zufällig eine deutsche (einfache) Quelle, wo dies beschrieben ist?

        google sendmail

        Ansonsten:
        http://www.faqs.org/rfcs/rfc2045.html
        Hier wird der Aufbau einer Mail nach dem MIME Protokoll beschreiben.
        Solltest dir mal die Abschnitte zum Content-type und Content-Transfer-Encoding durchlesen.

        Je korrekter deine Mail, um so grösser die Wahrscheinlichkeit, dass sie auch ankommt.

        mfg Beat

        --
        ><o(((°>           ><o(((°>
           <°)))o><                     ><o(((°>o
        Der Valigator leibt diese Fische
      2. Ich habe jetzt nochmals in Selfhtml nachgeschaut
        (http://de.selfhtml.org/navigation/suche/index.htm?Suchanfrage=sendmail). Da ist kein Encoding

        Ich empfehle dir diesen Formmailer für reine Textmails
        TestDemo http://www.elcappuccino.ch/cgi/mail/sfm_wrapper.pl
        Usage: http://www.elcappuccino.ch/cgi/mail/docserv.pl

        Die Demo beruht auf langer Recherche und Tests und beinhaltet einen Formularserver.
        Das heisst, solche Dinge wie Vorschau und Archivversion wie Spamtest sind implementiert.

        Es ist als Perlmodul geschrieben, und lässt sich somit in eine beliebige Perlanwendung einbinden.

        mfg Beat

        --
        ><o(((°>           ><o(((°>
           <°)))o><                     ><o(((°>o
        Der Valigator leibt diese Fische
    2. Hallo,

      Content-type: text/html

      Nein. Bei einer normalen Mail sollte das Format text/plain sein.

      Mit text/plain kommen jetzt keine Zeilenvorschübe (\n im Text) mehr.
      Gruß
      Kurti

      1. Hallo,

        Content-type: text/html

        Nein. Bei einer normalen Mail sollte das Format text/plain sein.

        Mit text/plain kommen jetzt keine Zeilenvorschübe (\n im Text) mehr.
        Gruß
        Kurti

        Warum?

        1. Content-type: text/html
          Nein. Bei einer normalen Mail sollte das Format text/plain sein.
          Mit text/plain kommen jetzt keine Zeilenvorschübe (\n im Text) mehr.
          Warum?

          Zeilenumbrüche in deinem Mailbody werden unverändert an dein Mailprogramm weiter gereicht.
          Wenn du sie in deinem Mailprgramm nicht siehst, dann hat das mit deinem Mailagent zu tun.

          Im Mailhead solltest du beachten, dass du Zeilenumbrüche nach dem Netzwerk Format senden musst.
          Ich verwende im Script zum Beispiel

          use constant { NL => "\n", CRLF => "\015\012"};

          NL für normale Newlines, CRLF für Netzwerk Newlines.

          und schreibe dann z.B.
             print MAIL "Content-type:text/plain; charset=UTF-8", CRLF;

          mfg Beat

          --
          ><o(((°>           ><o(((°>
             <°)))o><                     ><o(((°>o
          Der Valigator leibt diese Fische