Divi Beineke: sendmail

Hallo,
ich hoffe ganz doll auf Eure Hilfe!

Ich habe auf einer Website Formulare + script, die beim Ausfüllen sowohl eine
 Mail an mich als auch an den user senden.
Da die Einträge auf der Website veröffentlicht werden (und das nur Sinn
macht, wenn die User-Email korrekt ist), möchte ich gerne über die
automatische Mail an den user "austesten", ob die Email-Adresse okay ist.
Das heißt, eventuelle failure-Meldungen sollten an mich gehen.
Vom Webserver ist eine Envelope-Adresse vorgegeben und bislang habe ich es
nicht geschafft, dies zu umgehen oder anders einzurichten.

  • kann ich das überhaupt über das Script steuern (wenn ja, wie???)
  • oder muß das server-seitig eingerichtet werden (wenn ja, wie???)

So sieht das "Grundgerüst" des Email-Kopfes (nach verschiedenen Tests
jetzt wieder) aus:

open (MAIL, "|-") || exec $mailprog,$Formular{'email'} || die "Can't open $mailprog!\n";
print MAIL ("From: $yourname <$youmail>\n");
print MAIL ("Subject: Ihr Eintrag bei Wiederaufbau Kosova - Your Insert to Reconstruction Kosova\n\n");
(...)

Über Hinweise würde ich mich sehr -  sehr  -  sehr freuen!!!!

Herzliche Grüße
Divi

Ps.: Um diese Site geht es:

Wiederaufbau Kosova - Reconstruction Kosova
Rindërtimi i Kosovës - Obnova Kosova
http://www.bndlg.de/~wplarre/Wiederaufbau/

  1. Hi,

    open (MAIL, "|-")

    was glaubst Du damit zu bewirken?

    || exec $mailprog,$Formular{'email'}

    Was immer $mailprog ist - Du solltest Dir die Doku dazu durchlesen. sendmail beispielsweise (das Du zu verwenden scheinst) erlaubt sowohl, den Mailtext nach Empfängern zu durchsuchen, als auch, einen Return-Pfad im Falle von Bounces anzugeben. Beides ist für Dich sinnvoll, wenn ich Dein Problem richtig verstehe.

    Es reicht übrigens, mit open zu arbeiten. Das ist die gängige Methode - wenn nicht Net::SMTP verwendet wird, was empfehlenswert ist.

    || die "Can't open $mailprog!\n";

    Hier sollte noch $! und ggf. $? ausgegeben werden, damit Du im Zweifel die Fehlerursache erfährst.

    Cheatah

    1. Hi!

      open (MAIL, "|-")

      was glaubst Du damit zu bewirken?

      ... ehrlich gesagt, keine Ahnung, habe ich abgekupfert ..
      mit -f habe ich es mal auf Anraten versucht, hatte aber leider auch nicht
      funktioniert, bzw. ich habe nicht herausgefunden, wie ich das korrekt
      einbauen muß ...

      || exec $mailprog,$Formular{'email'}

      Was immer $mailprog ist - Du solltest Dir die Doku dazu durchlesen. sendmail beispielsweise (das Du zu verwenden scheinst) erlaubt sowohl, den Mailtext nach Empfängern zu durchsuchen, als auch, einen Return-Pfad im Falle von Bounces anzugeben. Beides ist für Dich sinnvoll, wenn ich Dein Problem richtig verstehe.

      sorry, ja, es ist sendmail - weiß jemand, wo ich die Doku dazu finde?

      Es reicht übrigens, mit open zu arbeiten. Das ist die gängige Methode - wenn nicht Net::SMTP verwendet wird, was empfehlenswert ist.

      || die "Can't open $mailprog!\n";

      Hier sollte noch $! und ggf. $? ausgegeben werden, damit Du im Zweifel die Fehlerursache erfährst.

      ... bis darauf, daß die Fehlermeldungen nicht an mich sondern an den Webserver gehen, funktioniert alles reibungslos ....

      Danke so weit!
      Grüße
      Divi

      1. Hi,

        ... ehrlich gesagt, keine Ahnung, habe ich abgekupfert ..

        das Problem ist bei fremden Code immer gegeben. Lies Dir das nötige Wissen _immer_ aus der Doku und anderen einschlägigen Quellen an - ansonsten richtest Du u.U. Schaden an, weil Du die Konsequenzen des Codes einfach nicht kanntest.

        Never use code you don't understand. Never ever.

        mit -f habe ich es mal auf Anraten versucht, hatte aber leider auch nicht
        funktioniert, bzw. ich habe nicht herausgefunden, wie ich das korrekt
        einbauen muß ...

        -f ist ein Schalter, den sendmail erkennt. Dazu mußt Du es erst mal aufrufen, was bei obigem Code nicht der Fall ist.

        sorry, ja, es ist sendmail - weiß jemand, wo ich die Doku dazu finde?

        Auf einem Unix-System, das sendmail installiert hat (also auf jedem Unix-System *g*) erhälst Du sie über

        man sendmail

        Alternativ kannst Du auch http://www.perldoc.org/ verwenden, das nebenbei auch eine man-Schnittstelle liefert.

        ... bis darauf, daß die Fehlermeldungen nicht an mich sondern an den Webserver gehen, funktioniert alles reibungslos ....

        Du bist der Webserver. Dieser schreibt Fehlermeldungen ins Error-Log. Hilfreich sind allerdings, wenn Du eine Anzeige im Browser willst, die Informationen unter

        perldoc CGI::Carp

        Beachte, daß dies nichts bei Kompilierungsfehlern bringt.

        Cheatah

        1. Joho,

          Never use code you don't understand. Never ever.

          *unterstreich*

          -f ist ein Schalter, den sendmail erkennt. Dazu mußt Du es erst mal aufrufen, was bei
          obigem Code nicht der Fall ist.

          Wobei man dabei noch sagen sollte, dass man das nur im Notfall verwenden sollte. -f gibt
          ein
          X-Authentication-Warning: <rechnername>: <user> set sender to <sender> using -f

          Nach Moeglichkeit immer
          sendmail -t
          To: user@domain.de
          From: user@domain.de
          Return-Path: user@domain.de
          Errors-To: user@domain.de
          Reply-To: user@domain.de
          Subject: mein subject

          body

          benutzen.

          Auf einem Unix-System, das sendmail installiert hat (also auf jedem Unix-System *g*)
          erhälst Du sie über

          ;-) Postfix oder qmail sind eigentlich gute Alternativen.

          Du bist der Webserver. Dieser schreibt Fehlermeldungen ins Error-Log. Hilfreich sind
          allerdings, wenn Du eine Anzeige im Browser willst, die Informationen unter

          Ich glaube, hier meinte er Bounce-Mails.
          Und die kriegt er ueber den Mail-Header Errors-To:, bzw. Return-Path: und Reply-To:.

          Du hast in deinem vorherigen Posting gesagt, das sei sendmail-spezifisch. Das ist es
          aber nicht.

          Gruss,
           CK
           http://wwwtech.de

          1. Hi,

            X-Authentication-Warning: <rechnername>: <user> set sender to <sender> using -f

            ist mir neu. Wo genau sieht man das? In der ausgehenden Mail?

            Du hast in deinem vorherigen Posting gesagt, das sei sendmail-spezifisch. Das ist es
            aber nicht.

            Das bezog sich auf die Kommandozeilenparameter, und die sind i.d.R. programmspezifisch :-)

            Mailheader sind natürlich allgemeingültig, das ist richtig.

            Cheatah

            1. Joho,

              ist mir neu. Wo genau sieht man das? In der ausgehenden Mail?

              Das ist ein Mail-Header der ausgehenden Mail, ja:

              Return-Path: ck1@wwwtech.de
              Return-Path: ck1@wwwtech.de
              Received: (from ckruse@localhost)
               by dako.hispeed.ch (8.11.3/8.11.3) id f65CHIP01309;
               Thu, 5 Jul 2001 14:17:18 +0200 (CEST)
               (envelope-from ck1@wwwtech.de)
              Date: Thu, 5 Jul 2001 14:17:18 +0200 (CEST)
              Message-Id: 200107051217.f65CHIP01309@dako.hispeed.ch
              X-Authentication-Warning: dako.hispeed.ch: ckruse set sender to ck1@wwwtech.de using -f
              To: ckruse@dako.hispeed.ch
              From: ck1@wwwtech.de
              Subject: Testmail

              Das bezog sich auf die Kommandozeilenparameter, und die sind i.d.R. programmspezifisch
              :-)

              Ok, das stimmt ;-)

              Mailheader sind natürlich allgemeingültig, das ist richtig.

              Darauf wollte ich hinaus.

              Gruss,
               CK
               http://wwwtech.de

              1. Hi,

                ist mir neu. Wo genau sieht man das? In der ausgehenden Mail?
                Das ist ein Mail-Header der ausgehenden Mail, ja:

                danke. Ich unterstelle aber mal einfach, daß das auch Konfigurationssache ist :-)

                Cheatah

  2. open (MAIL, "|-") || exec $mailprog,$Formular{'email'} || die "Can't open $mailprog!\n";
    print MAIL ("From: $yourname <$youmail>\n");

    ich weiß nicht wie die variablen heißen, aber ich würde darauf tippen, dass es yourmail und nicht youmail heißen muss