AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein PHP: Weshalb ist der Inhalt nicht mehr lesbar?
Thema durchsuchen
Ansicht
Themen-Optionen

PHP: Weshalb ist der Inhalt nicht mehr lesbar?

Ein Thema von GreenHorn3600 · begonnen am 20. Sep 2009 · letzter Beitrag vom 20. Sep 2009
Antwort Antwort
GreenHorn3600

Registriert seit: 24. Jun 2007
165 Beiträge
 
#1

PHP: Weshalb ist der Inhalt nicht mehr lesbar?

  Alt 20. Sep 2009, 14:33
Hallo Zusammen,

bin gerade dabei, ein kleines Antwortformular zu implementieren. Nur klappt das nicht ganz. Wenn eine Datei mitgesendet werden soll, so kommt sie anschliessend verstümmelt an. Ich bin ratlos. Hat einer eine Idee? Danke schon mal.

Das Attachment wird folgendermassen hinzugefügt:
Code:
  $file = fopen($tmp_name,'rb');
  $data = fread($file, filesize($tmp_name));
  fclose($file);
     
  // Add file attachment to the message
  $Message .= "--$semi_rand";
  $Message .= "\nContent-Type: application/octetstream;\n name=\"$file_name\"";
  $Message .= "\nContent-Transfer-Encoding: base64";
  $Message .= "\nContent-Disposition: attachment;\n filename=\"$file_name\"\n";
  $Message .= chunk_split(base64_encode($data)); // Base64 encode the file data
Und das kämm auch gut an:
Code:
--49c27f4c4bed38fa501fc0aa4fec2f86
Content-Type: application/octetstream;
  name="my.png"
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
  filename="my.png"

jwv8YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAACgJJREFU
aEPlmvtTVdcVx8k0GZ1OfoxVqxbFRxUVhcvjXi5cnpc3VhQECgqoyEusgKBGUSCmbaJgZhpN0piZ
Rk1/SWZqkp+TMf2XOtMZ6g+r+7vO2fvuve8+l3OjJmnjzPLs8+CH+5nv+u61196vnBgqyNH//eK1
12j9+tdzXl23Lmfd+l8a735ON8+ereY8W13NWf33v3Ke/Wf1FeO3A5qMoQtVNHWrh2b+2Mdxfr6T
hufaaHg2Pc6KZ4FxqZXOWnFG3DtjRjx3xGnxLC2mxbPplsAYEu84psLFoPhu8KIdzeJ3HVEMwGF4
toG6Tx8myUkBG5lr5
  ...
MTQMLix08ovWE6Vp4BSMNCBSOelw2I/+BwHZcON1e2lCnN2bfruXz6apQ30Y4AGOSPIR0jeP87HJ
9p7omtHWHaX/x+g5V6fO3kJQ/WPR9DO38hDu6alacSryqHFgWR5c/rldwcE+pAxO/wV6MsBdGErU
YQAAAABJRU5ErkJggg==
--49c27f4c4bed38fa501fc0aa4fec2f86
Nur anschliessend ist es nicht mehr lesbar

Danke schon mal.

Euer GreenHorn
  Mit Zitat antworten Zitat
Benutzerbild von Valle
Valle

Registriert seit: 26. Dez 2005
Ort: Karlsruhe
1.223 Beiträge
 
#2

Re: PHP: Weshalb ist der Inhalt nicht mehr lesbar?

  Alt 20. Sep 2009, 15:13
Zitat von GreenHorn3600:
anschliessend ist es nicht mehr lesbar
Was heißt das genau? Mit was empfängst du die Mail? Ist die empfangende Datei genauso groß wie die gesendete? Ist sie binär, oder hast du die base64-kodierten Daten?

Mit freundlichen Grüßen,

Valle
Valentin Voigt
BOFH excuse #423: „It's not RFC-822 compliant.“
Mein total langweiliger Blog
  Mit Zitat antworten Zitat
GreenHorn3600

Registriert seit: 24. Jun 2007
165 Beiträge
 
#3

Re: PHP: Weshalb ist der Inhalt nicht mehr lesbar?

  Alt 20. Sep 2009, 15:19
Hallo Valle,

dies heißt, dass mein Thunderbird (auch MS Express) die Attatchments nicht mehr interpretieren kann. Es gibt ein kleines weißes Quartrat mit einen roten Kreuz in der Mitte.

Habe die Dateien mal gegen eine Mail vom Thunderbird verglichen, und da scheint, daß die Kodierung irgendwie durcheinander gekommen ist. Ich habe aber keinen Plan, an was dies liegen könnt.

Schöne Grüße
Euer GreenHorn
  Mit Zitat antworten Zitat
Benutzerbild von Valle
Valle

Registriert seit: 26. Dez 2005
Ort: Karlsruhe
1.223 Beiträge
 
#4

Re: PHP: Weshalb ist der Inhalt nicht mehr lesbar?

  Alt 20. Sep 2009, 15:22
Eventuell kannst du dir mal diese Howto anschauen. Ich habe es mal vor einiger zeit benutzt und es hat auch funktioniert. Was anderes fällt mir jetzt spontan auch nicht ein.

Mit freundlichen Grüßen,

Valle
Valentin Voigt
BOFH excuse #423: „It's not RFC-822 compliant.“
Mein total langweiliger Blog
  Mit Zitat antworten Zitat
GreenHorn3600

Registriert seit: 24. Jun 2007
165 Beiträge
 
#5

Re: PHP: Weshalb ist der Inhalt nicht mehr lesbar?

  Alt 20. Sep 2009, 15:36
Danke Valle,

wenn ich die Datei speicher, aus dem EMail Client, dann wird sie mit einer Größe von 0 Byte gespeichert. Irgendwie scheint er nicht das Ende richtig interpretieren zu können. Aber weshalb?

Schöne Grüße
GreenHorn
  Mit Zitat antworten Zitat
Benutzerbild von Valle
Valle

Registriert seit: 26. Dez 2005
Ort: Karlsruhe
1.223 Beiträge
 
#6

Re: PHP: Weshalb ist der Inhalt nicht mehr lesbar?

  Alt 20. Sep 2009, 15:38
Hast du das verlinkte Howto mal angeschaut und den Code mit deinem verglichen / ausgetauscht?

Mit freundlichen Grüßen,

Valle
Valentin Voigt
BOFH excuse #423: „It's not RFC-822 compliant.“
Mein total langweiliger Blog
  Mit Zitat antworten Zitat
GreenHorn3600

Registriert seit: 24. Jun 2007
165 Beiträge
 
#7

Re: PHP: Weshalb ist der Inhalt nicht mehr lesbar?

  Alt 20. Sep 2009, 15:50
Ja habe ich. In dem Link wird eine 8Bit Kodierung verwendet. Aber das hilft leider auch nicht weiter.

Hab es an anderer Stelle noch mal getestet, da wird das Dokumentenformat nicht erkannt. Hier muss irgendwo ein Fehler drin sein, wenn die Datei an die Message angegehängt wird. Nur welcher
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#8

Re: PHP: Weshalb ist der Inhalt nicht mehr lesbar?

  Alt 20. Sep 2009, 16:03
Das hilft dir zwar nicht direkt weiter, aber es gibt fertige Skripte wie PHPMailer, mit denen kannst du dein Vorhaben kinderleicht in die Tat umsetzen.
  Mit Zitat antworten Zitat
GreenHorn3600

Registriert seit: 24. Jun 2007
165 Beiträge
 
#9

Re: PHP: Weshalb ist der Inhalt nicht mehr lesbar?

  Alt 20. Sep 2009, 16:13
Hallo Matze,

an das hab ich auch schon gedacht. Habe mit dem RMail experimentiert (rMail, welches zu Anfang ganz gut aussah. Es hat aber Fehler in der Klassendeklaration, so, daß es nicht auf dem Host ausgeführt werden kann. Ich hab keine Ahnung an was das liegen kann..

Das von Dir verlinkte Script, scheint mir recht chaotisch zu sein, da müßte ich alles umbauen. Da scheint es leichter, den Fehler zu finden, wo er auch sei ...

Schöne Grüße
GreenHorn
  Mit Zitat antworten Zitat
GreenHorn3600

Registriert seit: 24. Jun 2007
165 Beiträge
 
#10

Re: PHP: Weshalb ist der Inhalt nicht mehr lesbar?

  Alt 20. Sep 2009, 16:40
Hier einmal die abgespeckte Routine. Vielleicht sieht ja von euch einer den Fehler. Dank schon mal.

Code:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
    <head>
        <title>
            Send Attatchments
        </title>
    </head>
    <?php
   
    function SendMail() {
        if (isset($_POST['EMail'])) {$EMail = htmlspecialchars($_POST['EMail']);};
        if (isset($_POST['Message'])) {$Message = htmlspecialchars($_POST['Message']);};
        if (($EMail != '') and ($Message != '')) {
            if (!preg_match('/^[_a-z0-9-]+(\.[_a-z0-9-]+)*@([a-z0-9-]+\.)+([a-z]{2,4})$/i', $EMail)) {
                WriteError("Ung&uuml;ltige EMail Addresse");
            } else {
                $Headers = 'From: ' . $EMail . "\r\n";
               
                $filesuploaded = 0;
                foreach($_FILES["files"]["error"] as $key => $error) {
                    if ($error == UPLOAD_ERR_OK) {
                        $tmp_name = $_FILES["files"]["tmp_name"][$key];
                        if (is_uploaded_file($tmp_name)) {
                            $filesuploaded += 1;
                        };
                    };
                };
               
                if ($filesuploaded > 0) { 
                    $semi_rand = md5(uniqid(time())); // Generate a boundary string
                    $FileSend = false;
                   
                    $Headers .= "\nMIME-Version: 1.0\n" .
                        "Content-Type: multipart/mixed;\n" .
                        " boundary=\"$semi_rand\"\n";
                   
                    $Message = "This is a multi-part message in MIME format.\n"        .
                        "--$semi_rand\n"                                               .
                        "Content-Type: text/plain; charset=iso-8859-1; format=flowed\n" .
                        "Content-Transfer-Encoding: 7bit\n\n"                          .
                        $Message                    . "\n\n"                          ;
                   
                    foreach($_FILES["files"]["error"] as $key => $error) {
                        if ($error == UPLOAD_ERR_OK) {
                            $tmp_name = $_FILES["files"]["tmp_name"][$key];
                            $file_name = $_FILES["files"]["name"][$key];
                            $file_type = $_FILES["files"]["type"][$key];
                           
                            if (is_uploaded_file($tmp_name) ) {
                                $file = fopen($tmp_name,'rb');
                                $data = fread($file, filesize($tmp_name));
                                fclose($file);
                               
                                // Add file attachment to the message
                                $Message .= "--$semi_rand";
                                $Message .= "\nContent-Type: $file_type; name=\"$file_name\"";
                                $Message .= "\nContent-Transfer-Encoding: base64";
                                $Message .= "\nContent-Disposition: attachment; filename=\"$file_name\"\n";
                                $Message .= chunk_split(base64_encode($data)); // Base64 encode the file data
                               
                                $FileSend = true;
                            };
                        };
                    };
                    if ($FileSend) $Message .= "--$semi_rand--\n\n";
                };
                if (!mail('grennhorn@everymail.org', 'Mail with Attachments', $Message, $Headers)) {
                    WriteError("Nachricht konte nicht versendet werden");
                };
            };
        };
    };
    ?>
    <body>
        <?php SendMail() ?>
        <?php function WriteError($Message) {echo $Message; }; ?>
    </body>
</html>
Schöne Grüße
GreenHorn
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:36 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz