Thread: PHP: Probleem met mail() en MIME
-
31-03-2005, 12:38 #1
PHP: Probleem met mail() en MIME
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:
Dit is het resultaat van de email (enkel de headers):PHP Code://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\"<info@noizz.be>\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>";
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?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: <proftpd@benesol.be> Delivered-To: info@noizz.be Received: from localhost (localhost [127.0.0.1]) by benesol.be (Postfix) with ESMTP id 15C2F3A805C for <info@noizz.be>; 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 <info@noizz.be>; 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: info@noizz.be Subject: Locally Funky - xx Mei 2005 - House/Techno Event From: "info" <info@noizz.be> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="-----=609a62c02d11e1b84332d0ec7f8ea7c8" Message-Id: <20050331092613.2B1A53A800D@benesol.be> 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"
Alvast bedankt
Noizz
PS: code komt van hierno votes
-
-
31-03-2005, 16:11 #2Member
- Registered
- 20/12/02
- Location
- Antwerpen
- Posts
- 1,319
- iTrader
- 8 (100%)
- Mentioned
- 0 Post(s)
- Reputation
- 0/1
ik raad u de phpmailer class aan: http://phpmailer.sourceforge.net/
makkelijk in gebruik en moet je zelf niet prutsen met headers en dergelijke, je kunt je attachment dan toevoegen met slechts 1 regel codeLast edited by frenzal; 31-03-2005 at 16:26. Reason: typo
no votes
-
31-03-2005, 16:19 #3
Of een mail class van pear :
http://pear.php.net/packages.php?catpid=14&catname=Mail
Als je pear neemt kan je ook gebruik maken van database, quickform, table, ... classes
(allemaal zéééér handig !)
Als je enkel wilt mailen zou ik voor phpmailer gaan
(pear installatie/configuratie is lastig als beginneling)no votes
-
31-03-2005, 17:21 #4
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.
Noizzno votes
-
01-04-2005, 14:46 #5
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 zekerno votes
-
04-04-2005, 14:00 #6
hey
we geraken al verder, maar nog niet af.
bij volgende PHP code:
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.PHP Code:
//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\"<info@noizz.be>\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);
code achter de email:
En daar stopt de email.Code:From: "info" <info@noizz.be> MIME-Version: 1.0 Content-Type: image/jpeg; filename="Flyer_small.jpg" Message-Id: <20050404105037.9DCF347C0A3@benesol.be> 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
Kunnen jullie mij verder helpen?
Alvast bedankt
Noizzno votes
-
04-04-2005, 18:11 #7
Zoals ik zei, het moet in de body
Header code:
body code:PHP Code://headers voor de email
$headers = "From: \"info\"<info@noizz.be>\n";
$headers .= "MIME-Version: 1.0\n";
$headers .= "Content-Type: multipart/mixed; boundary=\"$boundary\"";
PHP Code:$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
no votes
-
04-04-2005, 19:49 #8
Het wil nog steeds niet werken
ik krijg volgende error:PHP Code://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\"<info@noizz.be>\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);
NoizzCode:To: info@noizz.be Subject: Locally Funky - xx Mei 2005 - House/Techno Event From: "info" <info@noizz.be> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="-----=a6616cbe58283f94cfc7ed6cb267556e" Message-Id: <20050404164326.34BE63A801A@benesol.be> 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
no votes
-
04-04-2005, 23:18 #9Member
- Registered
- 17/07/02
- Location
- Sol System
- Posts
- 10,064
- iTrader
- 1 (100%)
- Mentioned
- 0 Post(s)
- Reputation
- 27/78
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.
Last edited by dJeez; 04-04-2005 at 23:20.
PSN: dJeezBE - Delicious bookmarks
Disclaimer: I am currently suffering from severe CSD (Compulsive Sarcasm Disorder). - L'onion fait la farce - Facile largire de alienoPastafarian by choiceno votes
-
05-04-2005, 00:08 #10
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)no votes
-
05-04-2005, 01:11 #11
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 aankloppenno votes
