Archief - PHP: Probleem met mail() en MIME

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

Noizz.be

Legacy Member
Hoi

de bedoeling is devolgende: we geven een fuif, en via onze website kan je de flyer + aangepaste email naar vrienden sturen.

Ik heb wel een probleem met MIME (denk ik)

PHP code van het bestand dat de flyer verstuurd:
PHP:
//email opstellen en versturen
$boundary = '-----='.md5(uniqid(rand()));

//prent toevoegen
$path = "images/pics/Flyer_small.jpg";
$fp = fopen($path, 'r');
do
{
	$data = fread($fp, 8192);
	if (strlen($data) == 0) break;
	$content .= $data;
} while (true);
$content_encode = chunk_split(base64_encode($content));
$message .= $content_encode."\n";
$message .= "--".$boundary."\n";

//headers voor de email
$headers  = "From: \"info\"<[email protected]>\n";
$headers .= "MIME-Version: 1.0\n";
$headers .= "Content-Type: multipart/mixed; boundary=\"$boundary\"";
$message .= "Content-Disposition: inline; filename=\"Flyer_small.jpg\"\n\n";
				
mail($mail, 'Locally Funky - xx Mei 2005 - House/Techno Event', $message, $headers);
					
echo "The flyer has been send to <b>$mail</b>";

Dit is het resultaat van de email (enkel de headers):
Code:
From - Thu Mar 31 11:29:14 2005
X-Account-Key: account2
X-UIDL: UID117-1099138901
X-Mozilla-Status: 0001
X-Mozilla-Status2: 10000000
Return-Path: <[email protected]>
Delivered-To: [email protected]
Received: from localhost (localhost [127.0.0.1])
	by benesol.be (Postfix) with ESMTP id 15C2F3A805C
	for <[email protected]>; Thu, 31 Mar 2005 11:26:22 +0200 (CEST)
Received: from benesol.be ([127.0.0.1])
 by localhost (venus [127.0.0.1]) (amavisd-new, port 10024) with ESMTP
 id 32277-05 for <[email protected]>; Thu, 31 Mar 2005 11:26:13 +0200 (CEST)
Received: by benesol.be (Postfix, from userid 1001)
	id 2B1A53A800D; Thu, 31 Mar 2005 11:26:13 +0200 (CEST)
To: [email protected]
Subject: Locally Funky - xx Mei 2005 - House/Techno Event
From: "info" <[email protected]>
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="-----=609a62c02d11e1b84332d0ec7f8ea7c8"
Message-Id: <[email protected]>
Date: Thu, 31 Mar 2005 11:26:13 +0200 (CEST)
X-Virus-Scanned: by amavisd-new at benesol.be
X-Amavis-Alert: BAD HEADER MIME error: error: part did not end with expected boundary

------ hier staan allemaal rare tekens (wss gecodeerde bestand van de flyer) -----

-------=609a62c02d11e1b84332d0ec7f8ea7c8
Content-Disposition: inline; filename="Flyer_small.jpg"

Zoals je kan zien komt er een "BAD HEADER MIME error". Aangezien ik hier enorm, maar dan enorm weinig van weet ben ik het gaan opzoeken maar ben ik niet bepaald wijzer geworden. Zouden jullie mij kunnnen helpen aub?

Alvast bedankt
Noizz

PS: code komt van hier

Noizz.be

Legacy Member
allemaal zeer vriendelijk, maar ik zien da ni zitten van zo'n dingen.

Kzou gewoon willen weten wa ik fout gedaan heb, code ziet er niet zo ingewikkeld uit. Alleh, ik begrijp ze als het ware, maar ik zit gewoon te prutsen met die MIME

Dus gelieve daar wat info omtred te geven.

Noizz

Slicer

Legacy Member
Er zitten op een paar plaatsen fouten in gelovek:

$message .= "Content-Disposition: inline; filename=\"Flyer_small.jpg\"\n\n"; hoort niet bij de headers maar in de body.

Na je boundary moet er staan welk type het is:
Content-Transfer-Encoding: base64\n
Content-Disposition: attachment\n
Content-Type: mime type in jouw geval image/jpeg; name=filenaam\n\n
hier komt je base encoded image (met 2 newlines achter, dus niet een)
boundary opnieuw

ik geloof dat je de laatste boundary kan weglaten maar ben niet zeker

Noizz.be

Legacy Member
hey

we geraken al verder, maar nog niet af.

bij volgende PHP code:

PHP:
//email opstellen en versturen
$boundary = '-----='.md5(uniqid(rand()));

$message .= "Content-Disposition: inline; filename=\"Flyer_small.jpg\"\n\n";

//prent toevoegen
$path = "images/pics/Flyer_small.jpg";
$fp = fopen($path, 'r');
do
{
	$data = fread($fp, 8192);
	if (strlen($data) == 0) break;
	$content .= $data;
} while (true);
$content_encode = chunk_split(base64_encode($content));
$message .= $content_encode."\n\n";
//headers voor de email
$headers  = "From: \"info\"<[email protected]>\n";
$headers .= "MIME-Version: 1.0\n";
$headers .= "Content-Type: image/jpeg; filename=\"Flyer_small.jpg\"\n\n";
$headers .= "boundary=\"$boundary\"\n";
$headers .= "Content-Transfer-Encoding: base64\n";
$headers .= "Content-Disposition: attachment\n";
	
mail($mail, 'Locally Funky - xx Mei 2005 - House/Techno Event', $message, $headers);

krijg ik een email toegestuurd met en attachment: "attachment.jpeg". Probeer ik deze te openen dan geeft deze een error. "can't open file". Bovendien is het prentje niet te zien in de email, buiten een icoontje dat een "fout prentje" laat zien.

code achter de email:
Code:
From: "info" <[email protected]>
MIME-Version: 1.0
Content-Type: image/jpeg; filename="Flyer_small.jpg"
Message-Id: <[email protected]>
Date: Mon,  4 Apr 2005 12:50:37 +0200 (CEST)
X-Virus-Scanned: by amavisd-new at benesol.be

boundary="-----=928b30e98352b0e3ba0643683afe6732"
Content-Transfer-Encoding: base64
Content-Disposition: attachment


Content-Disposition: inline; filename="Flyer_small.jpg"

/9j/4AAQSkZJRgABAgAAZABkAAD/7AARRHVja3kAAQAEAAAAZAAA/+4ADkFkb2JlAGTAAAAAAf/b
AIQAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgIC
AwMDAwMDAwMDAwEBAQEBAQECAQECAgIBAgIDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMD
AwMDAwMDAwMDAwMDAwMDAwMD/8AAEQgAlgBqAwERAAIRAQMRAf/EANYAAAEEAgMBAAAAAAAAAAAA
AAcEBQYIAAMBAgkKAQAABQUBAAAAAAAAAAAAAAAABQYHCAEDBAkKAhAAAAYBAgMEBQgFBwYPAAAA
AQIDBAUGBxEIABITITEUCUFRYZEVcaHRIjJSFhexQjNTJPCB4WKyIzXBgtI0NlbxcpKiQ2PTVGQl..... (HIER DE REST VAN DE BASE64 CODE)
...
...
...UXv2TC4J/5Pf3ftNxXqete39fTSUw935y32wwlrbdwWFv2SjWPW0+7UwAfvdva+5oD0HT8/0ddU
dyU8uTmy9W1RDqMfhHNE0mrp4yePPDJmWIdaQXaq8p5Rw9BY7vmAigOhU5yFNqUNk/jSHi9vwPFQ
8LlE/FVs4hbSAMu+HYNjUdVYVWnQqD8xqO+aN82XuTlgVynfk7oNKiTed9fhXfWtNQLncfuTf8on
/acLnRZ0/DWdRz+4N3/fJ3ev7fA1Xp+Gv//Z

En daar stopt de email.

Kunnen jullie mij verder helpen?
Alvast bedankt
Noizz

Slicer

Legacy Member
Zoals ik zei, het moet in de body

Header code:

PHP:
//headers voor de email
$headers  = "From: \"info\"<[email protected]>\n";
$headers .= "MIME-Version: 1.0\n";
$headers .= "Content-Type: multipart/mixed; boundary=\"$boundary\"";

body code:

PHP:
$message .= $boundary."\n";
$message .= "Content-Transfer-Encoding: base64\n";
$message .= "Content-Type: image/jpeg\n";
$message .= "Content-Disposition: inline; filename=\"Flyer_small.jpg\"\n\n"; 
$message .= encoded image file

Noizz.be

Legacy Member
Het wil nog steeds niet werken :help:

PHP:
//email opstellen en versturen
$boundary = '-----='.md5(uniqid(rand()));

$message .= $boundary."\n";
$message .= "Content-Transfer-Encoding: base64\n";
$message .= "Content-Type: image/jpeg;\n";
$message .= "Content-Disposition: inline; filename=\"Flyer_small.jpg\"\n\n";

//prent toevoegen
$path = "images/pics/Flyer_small.jpg";
$fp = fopen($path, 'r');
do
{
	$data = fread($fp, 8192);
	if (strlen($data) == 0) break;
	$content .= $data;
} while (true);
$content_encode = chunk_split(base64_encode($content));
$message .= $content_encode."\n\n";

//headers voor de email
$headers  = "From: \"info\"<[email protected]>\n";
$headers .= "MIME-Version: 1.0\n";
$headers .= "Content-Type: multipart/mixed; boundary=\"$boundary\"";
		
mail($mail, 'Locally Funky - xx Mei 2005 - House/Techno Event', $message, $headers);

ik krijg volgende error:

Code:
To: [email protected]
Subject: Locally Funky - xx Mei 2005 - House/Techno Event
From: "info" <[email protected]>
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="-----=a6616cbe58283f94cfc7ed6cb267556e"
Message-Id: <[email protected]>
Date: Mon,  4 Apr 2005 18:43:26 +0200 (CEST)
X-Virus-Scanned: by amavisd-new at benesol.be
X-Amavis-Alert: BAD HEADER MIME error: error: unexpected end of preamble

-----=a6616cbe58283f94cfc7ed6cb267556e
Content-Transfer-Encoding: base64
Content-Type: image/jpeg;
Content-Disposition: inline; filename="Flyer_small.jpg"

/9j/4AAQSkZJRgABAgAAZABkAAD/7AARRHVja3kAAQAEAAAAZAAA/+4ADkFkb2JlAGTAAAAAAf/b
AIQAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgIC
AwMDAwMDAwMDAwEBAQEBAQECAQECAgIBAgIDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMD
AwMDAwMDAwMDAwMDAwMDAwMD/8AAEQgAlgBqAwERAAIRAQMRAf/EANYAAAEEAgMBAAAAAAAAAAAA
AAcEBQYIAAMBAgkKAQAABQUBAAAAAAAAAAAAAAAABQYHCAEDBAkKAhAAAAYBAgMEBQgFBwYPAAAA
AQIDBAUGBxEIABITITEUCUFRYZEVcaHRIjJSFhexQjNTJPCB4WKyIzXBgtI0NlbxcpKiQ2PTVGQl

Noizz

dJeez

Legacy Member
En als je zou luisteren naar de goede raad van anderen en niet steeds het wiel opnieuw wil uitvinden (wat tijdrovend is, maar uiteraard ook wel leerrijk èn frustrerend tegelijkertijd kan zijn) dan werkte het al. Het is maar de vraag wat je wil, ofwel wil je alles met de hand doen en dan zal je je moeten wenden tot de RFCs, die moeten doornemen en dan tenslotte vaststellen dat je hetzelfde resultaat ook in 15 minuten kon bekomen door bestaande (tried & tested) componenten te gebruiken, zij het via PEAR of via een andere gekende PHP klasse.

S3cT0r

Legacy Member
ik zou je wel helpen als ik kon Noizz, want doe het zelvers zijn nog altijd de besten :)
Spijtig genoeg ken ik bitter weinig van hoe mail() werkt in PHP en de e-mail standaard, dus ofwel kan je het op een ander (php) forum gaan vragen, ofwel kan je de RFC doorlezen (ik _haat_ RFC's).

//Succes
(post het wel als je de fout gevonden hebt)

Noizz.be

Legacy Member
bwoa, ik zen ni voor die voorgekauwde dingen. Dan doe ik het liever zelf en dan leer ik nog wat bij. Bovendien bieden die dingen 19028023 functies waarvan ik slecht 1 "eenvoudige" van moet hebben

Noizz

Ik zal nekeer op een ander forum gaan aankloppen
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan