PHP 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:
<?php
$semi_rand = md5(time());
$mime_boundary = "==Multipart_Boundary_x{$semi_rand}x";
$headers .= "\nMIME-Version: 1.0\n" .
"Content-Type: multipart/mixed;\n" .
" boundary=\"{$mime_boundary}\"";
$email_message .= $html_message ."\n\n" .
"--{$mime_boundary}\n" .
"Content-Type:text/html; charset=\"iso-8859-1\"\n" .
"Content-Transfer-Encoding: 7bit\n\n" .
$email_message . "\n\n";
$fileatt = 'resources/createddocs/18/Eindgebruikersverklaring_159917_29-06-2009.doc'; // Path to the file
$fileatt_type = 'application/msword'; // File Type
$fileatt_name = 'Eindgebruikersverklaring_159917_29-06-2009.doc'; // Filename that will be used for the file as the attachment
$file = fopen($fileatt,'rb');
$data = fread($file,filesize($fileatt));
fclose($file);
$data = chunk_split(base64_encode($data));
$email_message .= "--{$mime_boundary}\n" .
"Content-Type: {$fileatt_type};\n" .
" name=\"{$fileatt_name}\"\n" .
//"Content-Disposition: attachment;\n" .
//" filename=\"{$fileatt_name}\"\n" .
"Content-Transfer-Encoding: base64\n\n" .
$data . "\n\n";
unset($data);
unset($file);
unset($fileatt);
unset($fileatt_type);
$ok = @mail($email_to, $email_subject, $email_message, $headers);
if($ok) {
echo "<font face=verdana size=2>The file was successfully sent!</font>";
} else {
die("Sorry but the email could not be sent. Please go back and try again!");
}
<?php $mime_boundary = "==Multipart_Boundary_x{$semi_rand}x"; $headers .= "\nMIME-Version: 1.0\n" . "Content-Type: multipart/mixed;\n" . " boundary=\"{$mime_boundary}\""; $email_message .= $html_message ."\n\n" . "--{$mime_boundary}\n" . "Content-Type:text/html; charset=\"iso-8859-1\"\n" . "Content-Transfer-Encoding: 7bit\n\n" . $email_message . "\n\n"; $fileatt = 'resources/createddocs/18/Eindgebruikersverklaring_159917_29-06-2009.doc'; // Path to the file $fileatt_type = 'application/msword'; // File Type $fileatt_name = 'Eindgebruikersverklaring_159917_29-06-2009.doc'; // Filename that will be used for the file as the attachment $file = fopen($fileatt,'rb'); $email_message .= "--{$mime_boundary}\n" . "Content-Type: {$fileatt_type};\n" . " name=\"{$fileatt_name}\"\n" . //"Content-Disposition: attachment;\n" . //" filename=\"{$fileatt_name}\"\n" . "Content-Transfer-Encoding: base64\n\n" . $data . "\n\n"; $ok = @mail($email_to, $email_subject, $email_message, $headers); if($ok) { echo "<font face=verdana size=2>The file was successfully sent!</font>"; } else { die("Sorry but the email could not be sent. Please go back and try again!"); }
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.
<?php
$rResource = fopen('Volmacht_'. $iId . '_' . date('d-m-Y') .'.doc', 'w+');
fwrite($rResource, $sFile);
fclose($rResource);
?>
<?php $rResource = fopen('Volmacht_'. $iId . '_' . date('d-m-Y') .'.doc', 'w+'); ?>
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.
|