Trädvy Permalänk
Medlem
Plats
Upplands Väsby
Registrerad
Mar 2010

PHP: Bifoga textfil i mail

Håller på att koda ett PHP-script som ska skicka en textfil via mail. Det funkar perfekt när jag skickar till en GMAIL, men när jag skickar till en adress som ligger hos One.com och öppnar mailet via deras Webbmail syns det att filen är bifogad men när jag ska öppna den är filen tom (dvs. saknar innehåll)! Misstänker att det även blir så när jag skickar till andra adresser. Vad kan detta bero på?? Nedan är ett utdrag ur min kod:

$filename = basename($dirfilename); $body = "Bifogat i detta mail finner du filen"; $path = "downloads/"; $file = $path.$filename; $file_size = filesize($file); $handle = fopen($file, "r"); $content = fread($handle, $file_size); fclose($handle); $content = chunk_split(base64_encode($content)); $uid = md5(uniqid(time())); $name = basename($file); $eol = PHP_EOL; // Headers $header = "From: ".$from_name." <".$from_mail.">".$eol; $header .= "Reply-To: ".$replyto.$eol; $header .= "MIME-Version: 1.0\r\n"; $header .= "Content-Type: multipart/mixed; boundary=\"".$uid."\""; // Message $message = "--".$uid.$eol; $message .= "Content-Type: text/html; charset=UTF-8".$eol; $message .= "Content-Transfer-Encoding: 8bit".$eol.$eol; $message .= $body.$eol; $message .= "--".$uid.$eol; $message .= "Content-Type: text/plain; name=\"".$filename."\"".$eol; $message .= "Content-Transfer-Encoding: base64".$eol; $message .= "Content-Disposition: attachment;\r\n filename*=utf-8''" . rawurlencode($filename).$eol; $message .= $content.$eol; $message .= "--".$uid."--"; if (mail($mail_to, $subject, $message, $header)) { echo "Filen skickad"; } else { echo "Misslyckad sändning"; }

Trädvy Permalänk
Medlem
Plats
Stockholm
Registrerad
Apr 2017

Ingen aning varför filen är tom men rekommenderar dig att använda PHPMailer alla dagar i veckan mot PHPs inbyggda mailfunktion.

Trädvy Permalänk
Medlem
Plats
Upplands Väsby
Registrerad
Mar 2010

@zoomy: Tack för ditt tips. Lyckades dock efter mycket huvudbry lösa mitt problem. Bytta ut denna rad:

$message .= "Content-Disposition: attachment;\r\n filename*=utf-8''" . rawurlencode($filename).$eol;

...mot denna:

$message .= 'Content-Disposition: attachment; filename=". rawurlencode($filename).";'.$eol.$eol;

Några få tecken som gjorde stor skillnad!