Mail mit Anhang funzt nicht

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Mail mit Anhang funzt nicht

    Hallo,

    Ich weis das das Thema hier schon diskutiert wurde, und ich habe
    mich auch in die Mime Header Sache eingelesen und denke mal grössten Teils verstanden, aber funzen tut es trotzdem nicht.

    Die Email kommt ohne Body und mit einem fehlerhaften Attachment an.

    Hier der Code:

    PHP-Code:
    $file "C:/.../regexp.pdf";
    $file_name "regulaere_expressions.pdf";
    $from "...@....com";
    $to "newuser@localhost";
    $message "Das sollte im Body stehen";
    $boundary strtoupper(md5(uniqid(time())));
    $mail_header  "From:Test <".$from.">\n";
    $mail_header .= "MIME-Version: 1.0";
    $mail_header .= "\nContent-Type: multipart/mixed; boundary=$boundary";
    $mail_header .= "\n\nThis is a multi-part message in MIME format";
    $mail_header .= "\n--$boundary";
    $mail_header .= "\nContent-Type: text/plain";
    $mail_header .= "\nContent-Transfer-Encoding: 8bit";
    $mail_header .= "\n\n$message";
    $file_content fread(fopen($file,"r"),filesize($file));
    $file_content chunk_split(base64_encode($file_content));
    $mail_header .= "\n--$boundary";
    $mail_header .= "\nContent-Type: application/octetstream; name=\"$file_name\"";
    $mail_header .= "\nContent-Transfer-Encoding: base64";
    $mail_header .= "\nContent-Disposition: attachment; filename=\"$file_name\"";
    $mail_header .= "\n\n$file_content";
    $mail_header .= "\n--$boundary--";
    $send mail($to,"Betreff",$message,$mail_header); 
    Die email wird gesendet. Der Header der gesendeten Mail sieht dann so aus:

    [COLOR=red]
    Received: from ...
    X-Envelope-To: <newuser@localhost>
    Return-path: <postmaster@localhost>
    Received: from...
    Date: Thu, 15 Sep 2005 10:18:06 +0100
    Subject: Betreff
    To: newuser@localhost
    From:Test <...@....com>
    MIME-Version: 1.0
    Content-Type: multipart/mixed; boundary=3B4FE907CCB59AD2503C2D449CA0624E
    This is a multi-part message in MIME format
    --3B4FE907CCB59AD2503C2D449CA0624E
    Content-Type: text/plain
    Content-Transfer-Encoding: 8bit
    Das sollte im Body stehen
    --3B4FE907CCB59AD2503C2D449CA0624E
    Content-Type: application/octetstream; name="regulaere_expressions.pdf"
    Content-Transfer-Encoding: base64
    Content-Disposition: attachment; filename="regulaere_expressions.pdf"
    [/COLOR]

    Nach dem Header kommt dann wenn ich mir die Datei anschaue
    eine ellen langer Code

    Aussschnitt:
    JVBERi0xLjMNJeLjz9MNCjM3IDAgb2JqDTw8IA0vTGluZWFyaXplZCAxIA0vTyAzOSANL0ggWyAx
    MDgwIDM4MyBdIA0vTCA5MzA0MiANL0UgNDc4MjAgDS9OIDcgDS9UIDkyMTg0IA0+PiANZW5kb2Jq
    DSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
    ICB4cmV

    und dann der Boddytext.

    Wenn ich mit Outlook die mail dann abrufe, dann steht im Body nichts und
    das Attachment(im Original 91kB) ist fehlerhaft(18 Bytes)

    Kann mir da bitte jemand helfen?

    Danke für Tipps
    Zuletzt geändert von galaxy2; 15.09.2005, 09:49.

  • #2
    Hallo galaxy2,

    habe gerade eben deinen script getestet und bei mir funktioniert einwandfrei. Allerdings musste ich den pfad ändern von "C:/.../regexp.pdf"
    in "regexp.pdf".

    PHP Version 4.3.4
    Apache/1.3.27 (Linux/SuSE)
    Email: Lotus Notes
    Zuletzt geändert von pippo; 15.09.2005, 09:55.
    In Flames - Pinbal Map
    Becoming the Archetype - No Fall Too Far
    Pantera

    Kommentar


    • #3
      Dann dazu mal noch eine Frage:

      Wie hast du denn dann den Pfad angegeben wo die Datei liegt?

      Oder wie hast du das dann gelöst?

      Danke füR den Tipp

      Kommentar


      • #4
        ja genau die PDF datei liegt zusammen mit der PHP datei, auf dem server.
        PHP-Code:
        $file "regexp.pdf"
        das ist das einzige was ich geändert habe.
        Zuletzt geändert von pippo; 15.09.2005, 10:13.
        In Flames - Pinbal Map
        Becoming the Archetype - No Fall Too Far
        Pantera

        Kommentar


        • #5
          Komisch. Bei mir geht das nicht

          Selbst wenn ich die von dir vorgeschlagene Aenderung vornehme
          kommen genau die selben Fehler.(wie mit der Pfadangabe)

          Body leer und Anhang 18 Bytes gross

          Das zu versendende File ist ja wie schon gesagt 91 kb gross.


          Wenn ich mit nun die "pysiche Datei" auf dem Mercury server in dem Posteingang anschaue hat die Mail eine Grösse von 125kb

          In Outlook ist aber wie gesagt der Boddy leer und der Anhang nur 18 Bytes gross

          Also irgend etwas stimmt doch da nicht.

          Kommentar


          • #6
            vielleicht liegt auf dein server...

            sendmail_from: me@localhost oder in php.ini prüfen
            sendmail_path: /usr/sbin/sendmail -t -i -f wwwrun@domain.de
            ...
            In Flames - Pinbal Map
            Becoming the Archetype - No Fall Too Far
            Pantera

            Kommentar


            • #7
              Was ich eventuell noch vergessen habe zu sagen.

              Arbeite mit reiner Windowsumgebung,
              Apache/2.0.53 (Win32) mod_ssl/2.0.53 OpenSSL/0.9.7f PHP/5.0.4
              und Mercury als Mailserver.

              Aus phpinfo():

              sendmail_from: postmaster@localhost
              sendmail_path: no value

              Weis jetzt nicht was ich daran ändern soll.

              Kommentar


              • #8
                wenn du windows umgebung nutzst, solltest du SMTP und sendmail_from in der php.ini anpassen, hier findest du alle nötige infos dazu (zweiten teil unten):

                http://web.zdnet.de/internet/artikel...ils_03-wc.html
                In Flames - Pinbal Map
                Becoming the Archetype - No Fall Too Far
                Pantera

                Kommentar


                • #9
                  Jo steht aber schon alles soweit richtig.

                  SMTP=localhost, da ich auf meinem Rechner der Mercury Emailserver laufen habe. also stimmt das soweit schon?!?

                  sendmail_from sthet auf postmaster@localhost.
                  Also einer der Benutzer in meinem Mercury server.

                  Das mèsste doch dann alles soweit stimmen oder??

                  sendmail_path ist no value

                  Funzen tut es aber nicht

                  Kommentar


                  • #10
                    Original geschrieben von galaxy2
                    sendmail_path ist no value
                    wahrscheinlich hängt es hier:
                    sendmail_path: /usr/sbin/sendmail -t -i -f wwwrun@dein_domain.de
                    In Flames - Pinbal Map
                    Becoming the Archetype - No Fall Too Far
                    Pantera

                    Kommentar


                    • #11
                      Und was soll ich dahin schreiben? Verwende ja kein Linux.

                      Für was ist der Pfad überhaupt??

                      Kommentar


                      • #12
                        PHP-Code:
                        $file "C:\\pfad_zum_file\regexp.pdf"
                        WinKisten brauchen \ für Verzeichnispfade.
                        Ausserdem dürftest du auch ein Durcheinander bei den Zeilenenden haben. Du verwendest ja \n dafür. Die Ftk chunk_split() verwendet aber \r\n (gemäss RFC für Mails).

                        Gruss

                        tobi
                        Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

                        [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
                        Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

                        Kommentar


                        • #13
                          sendmail_path: Pfad, in dem sich das sendmail-Programm befindet, z.B. /usr/sbin/sendmail oder /usr/lib/sendmail. configure versucht, die richtige Position automatisch zu finden. Falls die automatische Erkennung aber fehlschlägt und der Standardwert auf Ihrem Rechner falsch ist, dann können Sie hier den richtigen Pfad setzen.

                          Falls Sie auf Ihrem Rechner sendmail nicht benutzen, müssen Sie den Pfad angeben, in sich der sendmail-Wrapper/-Ersatz befindet, sofern vorhanden. Zum Beispiel können Qmail-Benutzer diese Option auf /var/qmail/bin/sendmail oder /var/qmail/bin/qmail-inject setzen.

                          qmail-inject benötigt keine Optionen, um Mails korrekt zu verarbeiten.

                          Diese Option funktioniert auch unter Windows. Wenn Sie gesetzt ist, werden smtp, smtp_port und sendmail_from ignoriert und das angegebene Kommando wird ausgeführt!
                          In Flames - Pinbal Map
                          Becoming the Archetype - No Fall Too Far
                          Pantera

                          Kommentar


                          • #14
                            Das bedeutet das ich das ja nicht benötige, da ja die anderen
                            3 Einstellungen korrekt sind.

                            Also so langsam verzweifele ich an diesem Script.

                            Kommentar


                            • #15
                              ...die einstellungen zu prüfen ist sicherlich nicht falsch gewesen, aber glaube auch dass jahlives wohl recht hat
                              Zuletzt geändert von pippo; 15.09.2005, 11:49.
                              In Flames - Pinbal Map
                              Becoming the Archetype - No Fall Too Far
                              Pantera

                              Kommentar

                              Lädt...
                              X