mailscript: Inhoud van bijlage is gecodeerd bij het openen

Status
Niet open voor verdere reacties.

Leon d

Gebruiker
Lid geworden
7 apr 2009
Berichten
218
Hallo,

Ik heb eindelijk het voor elkaar dat er een bijlage mee gestuurd kan worden via een formulier. Nu het enige probleem is dat de inhoud van de bijlage (in dit geval .doc) wordt ge-encodeerd ofzo.
ik heb het volgende script dat eerst het bestand upload:
PHP:
            $uploaddir = $_SERVER['DOCUMENT_ROOT']."/tmp/";
            move_uploaded_file($_FILES['attachment']['tmp_name'], $uploaddir.basename($_FILES['attachment']['name']));

            $attach['name'] = $_FILES['attachment']['name'];
            $attach['path'] = $uploaddir.basename($_FILES['attachment']['name']);

$attachment_name = $_FILES['attachment']['name'];
$attachment_type = $_FILES['attachment']['type'];
$attachment_size = $_FILES['attachment']['size'];
$attachment_path = $uploaddir.basename($_FILES['attachment']['name']);
Nu het gedeelte wat het bestand opent en encodeert:
PHP:
if ($attachment_name) { 
	if ($attachment_size > 0) {
      if (!$attachment_type) $attachment_type =  "application/unknown";
      $content .= "Attached File: ".$attachment_name."\n";
	  $fp = fopen($attachment_path,  "r");
      $attachment_chunk = fread($fp, filesize($attachment_path));
      $attachment_chunk = base64_encode($attachment_chunk);
      $attachment_chunk = chunk_split($attachment_chunk);
   }
}
En uiteindelijk het stuk wat alles doormailt:
PHP:
Function mail_it($content, $subject, $email, $recipient) {
   global $attachment_chunk, $attachment_name, $attachment_type, $attachment_sent, $bcc;

   $ob = "----=_OuterBoundary_000";
   $ib = "----=_InnerBoundery_001";
   
   $headers  = "MIME-Version: 1.0\r\n"; 
   $headers .= "From: ".$email."\n"; 
   $headers .= "Reply-To: ".$email."\n";
  // if ($bcc) $headers .= "Bcc: ".$bcc."\n"; 
  // $headers .= "X-Priority: 1\n"; 
  // $headers .= "X-Mailer: DT Formmail".VERSION."\n"; 
   $headers .= "Content-Type: multipart/mixed;\n\tboundary=\"".$ob."\"\n";
   
          
   $message  = "This is a multi-part message in MIME format.\n";
   $message .= "\n--".$ob."\n";
   $message .= "Content-Type: multipart/alternative;\n\tboundary=\"".$ib."\"\n\n";
   $message .= "\n--".$ib."\n";
   $message .= "Content-Type: text/html;\n\tcharset=\"iso-8859-1\"\n";
   //$message .= "Content-Type: text/html;\n\tcharset=\"UTF-8\"\n";
   $message .= "Content-Transfer-Encoding: quoted-printable\n\n";
   $message .= $content."\n\n";
   $message .= "\n--".$ib."--\n";
   if ($attachment_name && !$attachment_sent) {
	  $message .= "\n--".$ob."\n";
      $message .= "Content-Type: $attachment_type;\n\attachment=\"".$attachment_name."\"\n";
	  $message .= "Content-Disposition: attachment;\n\tfilename=\"".$attachment_name."\"\n\n";
      $message .= "Content-Transfer-Encoding: base64\n\n";
	  $message .= $attachment_chunk;
      $message .= "\n\n";
      $attachment_sent = 1;
	}
   $message .= "\n--".$ob."--\n";
   
   mail($recipient, $subject, $message, $headers);
}

De email komt gewoon goed binnen. Er is ook een attachment, maar de attachment zelf lijkt wel geencodeerd. het volgende staat in de .doc die in de bijlage zit:
PHP:
Content-Transfer-Encoding: base64

0M8R4KGxGuEAAAAAAAAAAAAAAAAAAAAAPgADAP7/CQAGAAAAAAAAAAAAAAABAAAANwAAAAAAAAAA
EAAAOQAAAAEAAAD+////AAAAADYAAAD/////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////s
pcEAJWATBAAA8BK/AAAAAAAAMAAAAAAABgAA4Q0AAA4AYmpiaiJ4IngAAAAAAAAAAAAAAAAAAAAA
AAAJBBYALiAAAEASAQBAEgEA4QUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//w8AAAAA
AAAAAAD//w8AAAAAAAAAAAD//w8AAAAAAAAAAAAAAAAAAAAAAKQAAAAAAPIHAAAAAAAA8gcAAPIH
AAAAAAAA8gcAAAAAAADyBwAAAAAAAPIHAAAAAAAA8gcAABQAAAAAAAAAAAAAAAYIAAAAAAAADhAA
AAAAAAAOEAAAAAAAAA4QAAAAAAAADhAAACQAAAAyEAAAJAAAAAYIAAAAAAAAURUAADIBAABiEAAA
AAAAAGIQAAAAAAAAYhAAAAAAAABiEAAAAAAAAGIQAAAAAAAAYhAAAAAAAABiEAAAAAAAAGIQAAAA
AAAA0BQAAAIAAADSFAAAAAAAANIUAAAAAAAA0hQAAAAAAADSFAAAAAAAANIUAAAAAAAA0hQAACQA
En zo nog 36 pagina's verder.

Weet iemand hoe dit kan en heb je er een oplossing voor?

alvast bedankt!
 
Laatst bewerkt:
Deze regel weghalen:

$message .= "Content-Transfer-Encoding: base64\n\n";
 
Deze regel weghalen:

$message .= "Content-Transfer-Encoding: base64\n\n";

Hoi,

bedankt voor je reactie.

Dit heeft helaas niet geholpen. Het blijft hetzelfde, echter haalt hij nu wel de eerste regel in het document weg, "Content-Transfer-Encoding: base64"

Maar dat schreef hij dus weg nar het document. Ik vind het sowieso raar dat hij in het document ging schrijven... Nog verder enig idee?
 
Het is opgelost. Het is nu als volgt:
PHP:
   $bound = "--_----------=_101673915571292304445.667--";
   
   $headers  = "MIME-Version: 1.0\r\n"; 
   $headers = "From: contactformulier@blog.nl\n"; 
   $headers .= "Reply-To: ".$email."\n";
   $headers .= "Content-Type: multipart/mixed;\n\tboundary=\"".$bound."\"\n";
             
   $message  = "This is a multi-part message in MIME format.\n";
   $message .= "\n--".$bound."\n";
   $message .= "Content-Type: text/plain;\n\tcharset=\"iso-8859-1\"\n";
   $message .= "Content-Transfer-Encoding: 8bit\n\n";
   $message .= $content."\n\n";
   if ($attachment_name && !$attachment_sent) {
	  $message .= "\n--".$bound."\n";
	  $message .= "Content-Type: application/octet-stream; name=\"".$attachment_name."\"\n";
	  $message .= "Content-Transfer-Encoding: base64\n";
	  $message .= "Content-Disposition: attachment; filename=\"".$attachment_name."\"\n\n";
	  $message .= $attachment_chunk;
      $message .= "\n\n";
      $attachment_sent = 1;
	}
   $message .= "\n--".$bound."--\n";
   
   mail($recipient, $subject, $message, $headers);
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan