login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Bijlagen in webmail (Opgelost)

Offline Ultimatum - 29/06/2009 15:36
Avatar van UltimatumPHP expert Na veel pijn en moeite heb ik nu eindelijk dat ik de bijlagen die ik per e-mail mee stuur ook zichtbaar op de Webmail. Het enige probleem is dat als ik een word bestand wil openen of eerst opslaan en dan openen, het bestand helemaal leeg is. Het bestand is wel 35KB en als ik dezelfde bijlage via Outlook client op Windows open dan krijg ik wel de inhoud van het word document te zien.

Ik heb de code op deze site gebruikt: http://www.code...TED-091106/.

Het is bijna hetzelfde als wat ik heb, maar dit is mijn code:
  1. <?php
  2. $semi_rand = md5(time());
  3. $mime_boundary = "==Multipart_Boundary_x{$semi_rand}x";
  4.  
  5. $headers .= "\nMIME-Version: 1.0\n" .
  6. "Content-Type: multipart/mixed;\n" .
  7. " boundary=\"{$mime_boundary}\"";
  8.  
  9. $email_message .= $html_message ."\n\n" .
  10. "--{$mime_boundary}\n" .
  11. "Content-Type:text/html; charset=\"iso-8859-1\"\n" .
  12. "Content-Transfer-Encoding: 7bit\n\n" .
  13. $email_message . "\n\n";
  14.  
  15. $fileatt = 'resources/createddocs/18/Eindgebruikersverklaring_159917_29-06-2009.doc'; // Path to the file
  16. $fileatt_type = 'application/msword'; // File Type
  17. $fileatt_name = 'Eindgebruikersverklaring_159917_29-06-2009.doc'; // Filename that will be used for the file as the attachment
  18.  
  19. $file = fopen($fileatt,'rb');
  20. $data = fread($file,filesize($fileatt));
  21. fclose($file);
  22.  
  23. $data = chunk_split(base64_encode($data));
  24.  
  25. $email_message .= "--{$mime_boundary}\n" .
  26. "Content-Type: {$fileatt_type};\n" .
  27. " name=\"{$fileatt_name}\"\n" .
  28. //"Content-Disposition: attachment;\n" .
  29. //" filename=\"{$fileatt_name}\"\n" .
  30. "Content-Transfer-Encoding: base64\n\n" .
  31. $data . "\n\n";
  32.  
  33. unset($data);
  34. unset($file);
  35. unset($fileatt);
  36. unset($fileatt_type);
  37.  
  38. $ok = @mail($email_to, $email_subject, $email_message, $headers);
  39.  
  40. if($ok) {
  41. echo "<font face=verdana size=2>The file was successfully sent!</font>";
  42. } else {
  43. die("Sorry but the email could not be sent. Please go back and try again!");
  44. }


Ik gebruik Outlook Web Access, welke versie kan ik niet vinden. Ik weet dus niet of het aan de boundaries ligt of dat het probleem gewoon bij Webmail ligt.

De word documenten genereer ik wel zelf, ik heb eerst het word document als htm bestand opgeslagen en vervolgens de html in een string gezet. Deze schrijf ik dan als volgt weg.
  1. <?php
  2. $rResource = fopen('Volmacht_'. $iId . '_' . date('d-m-Y') .'.doc', 'w+');
  3. fwrite($rResource, $sFile);
  4. fclose($rResource);
  5. ?>


Als ik het andere word document pak en die gebruik dan werkt het wel in de Webmail. Zoals ik al zei weet ik dus niet of het nou aan de headers/boundary of aan de wijze waarop ik word documenten genereer ligt.

Ik hoop dat iemand hier al ervaring mee heeft en mij de juiste richting op kan wijzen want mij wil het niet lukken.

2 antwoorden

Gesponsorde links
Offline Koen - 29/06/2009 15:52
Avatar van Koen PHP expert Probeer je nu html opmaak te gebruiken in een word bestand, en dan vind je het vreemd dat hij niets weergeeft?
Offline Ultimatum - 29/06/2009 15:54 (laatste wijziging 30/06/2009 17:35)
Avatar van Ultimatum PHP expert Nee, dat probeer ik niet. Het word bestand moet alleen als bijlage worden meegestuurd, de html is voor de tekst in de e-mail. Regel 15 t/m 36 is voor het bijvoegen van de bijlage aan de e-mail. Regel 9 t/m 14 is de tekst die in de e-mail zelf komt.

Ik heb het nu werkend.
  1. <?php
  2. $sRand = md5(time());
  3.  
  4. $sMimeBoundary = '==Multipart_Boundary_x'. $sRand .'x';
  5.  
  6. $sTo = $sToName .'<'. $sToEmail .'>';
  7. $sFrom = $sFromName .'<'. $sFromEmail .'>';
  8.  
  9. $sHeaders = null;
  10. $sHeaders .= 'From: '. $sFrom . PHP_EOL;
  11. $sHeaders .= 'Reply-To: '. $sFrom . PHP_EOL;
  12. $sHeaders .= 'MIME-Version: 1.0'. PHP_EOL;
  13. $sHeaders .= 'Content-Type: multipart/mixed; boundary="'. $sMimeBoundary .'"'. PHP_EOL;
  14.  
  15. $sMessage = 'This is a multi-part message in MIME format.'. PHP_EOL . PHP_EOL;
  16.  
  17. $sMessage .= '--'. $sMimeBoundary . PHP_EOL;
  18. $sMessage .= 'Content-Type:text/html; charset="iso-8859-1"'. PHP_EOL;
  19. $sMessage .= 'Content-Transfer-Encoding: 7bit'. PHP_EOL . PHP_EOL;
  20. $sMessage .= $sHtmlMessage. PHP_EOL . PHP_EOL;
  21.  
  22. if (isset($aAttachment) && $aAttachment !== null && count($aAttachment) >= 1) {
  23. foreach($aAttachment as $iKey => $sFile) {
  24. $rFile = fopen($sFile, 'rb');
  25. $sContent = fread($rFile,filesize($sFile));
  26. fclose($rFile);
  27.  
  28. $sData = chunk_split(base64_encode($sContent));
  29.  
  30. $sMessage .= '--'. $sMimeBoundary . PHP_EOL;
  31. $sMessage .= 'Content-Type: application/octet-stream; name="'. basename($sFile) .'"'. PHP_EOL;
  32. $sMessage .= 'Content-Transfer-Encoding: base64'. PHP_EOL . PHP_EOL;
  33. $sMessage .= $sData. PHP_EOL . PHP_EOL;
  34.  
  35. unset($sData);
  36. unset($sFilename);
  37. }
  38. }
  39.  
  40. if(mail($sTo, $sSubject, $sMessage, $sHeaders) === true) {
  41. echo 'E-mail is met success verzonden';
  42. } else {
  43. echo 'Problemen tijdens versturen e-mail';
  44. }
  45. ?>
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.238s