Hé phphulpers,
ik heb een probleempje met mijn mailservice. Ik wil nu een bijlage toevoegen aan mijn mailformulier. maar hij geeft de melding dat het bestand dat ik wil toevoegen niet bestaat. Terwijl hij wel de goed path geeft bij de foutmelding. alleen dan met \\ ipv \. Dus
c:\\document\\Friko\\

misschien dat dat het probleem is??? als dat zo is...hoe krijg ik dat weg?

ik heb de volgende code:


<?PHP
if (isset($_POST['verzenden'])) {

$email_boundary = md5(uniqid(rand()) . microtime()); 
$inline_boundary = md5(uniqid(rand()) . microtime()); 

function attachment($file,$email_boundary) {            
    if(is_file($file))    {                
        $attachment_header = "--".$email_boundary."\n" ; 
        $attachment_header .= "Content-Type: application/octet-stream;\n name=\"$file\"\n"; 
        $attachment_header .= "Content-Transfer-Encoding: base64\n"; 
        $attachment_header .= "Content-Disposition: attachment;\n filename=\"$file\"\n\n"; 

        $fo = fopen($file,"rb"); 
        $file['inhoud'] = fread($fo,filesize($file)); 
        fclose($fo); 
                          
        $file['inhoud'] = rtrim(chunk_split(base64_encode($file['inhoud']),76,"\r\n"));                

        return $attachment_header.$file['inhoud']."\n"; 
    } 
    else { 
        echo "Het bestand ".$file." bestaat niet!!.\n"; 
    } 
} 


#WELKE CATEGORIEËN?
$catstring = '';
foreach($_POST["cats"] as $cat)
{
	if ($catstring) $catstring .= ' OR ';
	$catstring .= "mcid='$cat'";
}

#CONTROLEER DE CATEGORIEËN IN DE TABEL mail_cat
#$catresult 	= 	mysql_query("SELECT * FROM mail_cat WHERE mcid='".$_POST["cats"]."'") or mysql_error();
$catresult 		= 	mysql_query("SELECT * FROM mail_cat WHERE $catstring") or mysql_error();
#$geef 			= 	mysql_fetch_assoc($catresult);
$catstring = '';
while($geef = mysql_fetch_assoc($catresult)){
	if ($catstring) $catstring .= ' OR ';
	$catstring .= "mcid='".$geef['mcid']."'";
}

#CONTROLEER WIE ER HIERVOOR GEABONNEERD ZIJN
#$emid          =	mysql_query("SELECT * FROM Koppel_mcat_em WHERE mcid ='".$geef['mcid']."'") or mysql_error();
$emid          	=	mysql_query("SELECT DISTINCT emid FROM Koppel_mcat_em WHERE $catstring") or mysql_error();

#VERSTUUR ELK EEN EMAIL
while($mailid	=	mysql_fetch_assoc($emid)) {
$select			=	mysql_query("SELECT * FROM email WHERE emid ='".$mailid['emid']."'") or mysql_error();
$emails			=	mysql_fetch_assoc($select);
if (!$emails['email']) continue;	// Er staan lege combinaties in koppel_mcat_em !

#START EMAILBERICHT
$email			=	urldecode($emails['email']);	//decoderen emailadressen
$mto			=	'[email protected]';				//Reply to
$from			=	'Houstand';						//From
$msubj			=	"".$_POST['title']."";			//Titel van het bericht
$body_form_email=	"".$_POST['bericht']."";		//bericht
$bericht		= nl2br($body_form_email);			//dit zorgt er voor dat het bericht verzonden
													//wordt zoals het getypt wordt. incl. enters

#HEADERS
$headers = "From: ".$from." <".$mto.">\r\n";		//gegevens worden opgehaald		
$headers .= "Reply-To: ".$from." <".$mto.">\r\n";
$headers .= "MIME-Version: 1.0\r\n";
$headers .= "Content-Type: multipart/mixed; boundary=\"$email_boundary\"\n\n"; 
$headers .= "--$email_boundary\n"; 
$headers .= attachment($file); 
$headers .= "Content-Type: text/html; charset=iso-8859-1\r\n"; 	//dit zorgt er voor dat de HTML te 
																//zien is in het mailtje		

#TEMPLATE
mail($email, $msubj, "<html>
<head><base href=\"http://www.houstand.nl/\"><LINK REL=STYLESHEET TYPE=\"text/css\" HREF=\"peter.css\">
<title>Hou Stand mail</title>
</head>
<body class=\"main\">
<table width=\"590\" bgcolor=\"#800000\" cellpadding=\"1\" cellspacing=\"0\">
<tr>
<td><table class=\"main\" width=\"100%\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\">
<tr>
<td bgcolor=\"#EFEFEF\" colspan=\"3\"><div align=\"center\"><br><img src=\"http://www.houstand.nl/HouStandNieuws.gif\"><br><br></div></td>
</tr>
<tr>
<td colspan=\"3\">
<table class=\"main\" bgcolor=\"white\" cellpadding=\"5\" cellspacing=\"0\">
<tr>
<td width=\"45\" bgcolor=\"#EFEFEF\" valign=\"bottom\"><img src=\"http://www.houstand.nl/lustrum_1.gif\"></td>
<td width=\"500\">".$bericht."</td>
<td width=\"45\" valign=\"top\" bgcolor=\"#EFEFEF\"><img src=\"http://www.houstand.nl/lustrum_2.gif\"></td>
</tr>
</table>
</td>
</tr>		
</table>
</body>
</html>",$headers);

} // end while

// Log datum en subject in mailing.inc
$al = '';
$i = 0;
if (file_exists('mailing.inc')) {
	// Lees de laatste 4 mailings
	$fp = fopen( 'mailing.inc', "r" ); 
	if ($fp) {
		while(!feof($fp)) {
			$line = fgets($fp, 128);
			if (trim($line) != '') $al .= $line;
			if (++$i > 4) break;
		}
		fclose($fp);
	}
}
// Log nieuwe mailing vooraan
$fp = fopen( 'mailing.inc', "w" );
if ($fp) {
	fputs( $fp, date("j-m-Y") . " $msubj" . "\n" . $al);
	fclose( $fp );
}

echo '<META HTTP-EQUIV="refresh" content="1;URL=' . $main . '">'; 
echo '<strong>De mail is verstuurd</strong>, u wordt automatisch doorgeschakeld, moment geduld a.u.b.';

} // end if
else
{

//als nog niet op verzenden is gedrukt, formulier weergeven

?>
<fieldset>
	<legend><h2>Mail verzenden</h2></legend>
	
	<br>
	<br>
	
	<table width="70%" bordercolor="#C0C0C0" style="border-collapse: collapse">
		<tr>
			<td width="45%">
			<td>

				<form method="post" action="">

					<table width="70%" class="Lmenu" border="0" cellpadding="2" cellspacing="0">
						<tr bgcolor="EFEFEF">

							<td width="10%" valign="top">Catagorie:</td>
							<td width="60%"><SELECT MULTIPLE name="cats[]" SIZE="8"> 	
<?
//de catagoriën van de mailservice

$catresult = mysql_query("SELECT * FROM mail_cat ORDER BY catnaam") or mysql_error();
while($geef = mysql_fetch_assoc($catresult)){
echo "
								<option value='".$geef['mcid']."'>".$geef['catnaam']."<br></option>
";
}

?>
 
							</SELECT></td>
						</tr>
						<tr bgcolor="FFFFFF">
							<td width="10%" valign="top">Onderwerp:</td>
							<td width="60%"><input type="text" name="title" id="inputtitle" size="54" maxlength="60"></td>
						</tr>
						</tr>
						<tr bgcolor="FFFFFF">
							<td width="10%" valign="top">Bijlage:</td>
							<td width="60%"><input name="file" type="file"/></td>
						</tr>
	
						<tr bgcolor="FFFFFF">
							<td width="10%" valign="top">Bericht:</td>
							<td width="60%"><textarea name="bericht" id="bericht" cols="40" rows="10"></textarea></td>
						</tr>
						<tr bgcolor="EFEFEF">
							<td width="10%"></td>
							<td width="60%"><input type="submit" name="verzenden" value="Verzenden"></td>
						</tr>
					</table>
				</form>
			</td>
		</tr>
	</table>
</fieldset>

Ziet iemand het probleem?

bedankt alvast
gebruik PHPmailer class, die heeft dit soort dingen standaard.
echo is je $file.

en zet die in je headers is buiten quotes

en ipv is_file() kun je ook file_exists() gebruiken.
@jurgen.
hier zit al een grote mail service omheen. dus zou dubbel zijn als ik nu alleen om die bijlage een nieuwe PHPmailer ga gebruiken.

@Tommy
Die file_exists() snap ik. maar wat moet ik nu precies bijten de quotes zetten?
$headers .= attachment($file);
moet deze in quotes? of bedoel je $headers .= attachment(".$file."); ??


misschien zit de fout wel in de doorzending van formulier naar de function attachement?
Tim Groot schreef op 24.11.2007 19:45
@jurgen.
hier zit al een grote mail service omheen. dus zou dubbel zijn als ik nu alleen om die bijlage een nieuwe PHPmailer ga gebruiken.
Waar is dan de mail-service? Ik zie toch echt de functie mail() in jouw code staan.

Het lijkt mij typisch een gevalletje wiel opnieuw uitvinden, phpmailer of Swift Mailer doen dit allemaal in een handomdraai.
De mailservice zit erachter. ik bedoel gewoon dat het niet een opzichzelf staand script is. als je kijkt in dit script zie je dat ook. er zit een aanmeld, admin, ledensysteem etc al in. dus vandaar zeg ik ook, dat ik het niet allemaal ga aanpassen alleen voor een bijlage erin te maken.

Het kan toch makkelijk hierin gemaakt worden. dat is ook mijn vraag, of jullie hier bij kunnen helpen.
Misschien moet ik de vraag anders stellen. wat is er noodzakelijk voor het verzenden van een email met bijlage?
Dan kan ik misschien zelf de fout opsporen als deze niet direct gezien word.
Zoeken op :
Content-Type: multipart/mixed
let wel dat je dan met boundary moet gaan werken

Er zijn ook al suggesties gedaan richting:
phpMailer daar kan je ook uithalen hoe je een bijlage kan versturen

of je klikt op de link topic zoeken en typed bij zoeken op mailen met bijlage dan krijg andere topics waar misschien wat zinnigs in geschreven is.
Aan je vraag te zien weet je niet wat PHPmailer en swiftmailer doen. Kijk daar eens naar. Het zal je een hoop narigheid en gepiel besparen...
In de handleiding staat ook een voorbeeld voor het versturen van een email met bijlage, wellicht kun je daar wat mee.

Desondanks raad ik je aan om een aparte class zoals Swift Mailer te gaan gebruiken, dat maakt het leven een stuk eenvoudiger. En het is echt niet nodig om je huidige scripts nu direct aan te passen, pas alleen datgene aan wat je nu nodig hebt. Het is niet optimaal, maar het kan best.
ja precies. bedankt voor de uitleg.

Ik heb een aantal scripts al bekeken en handleidingen.

Volgens mij ben ik in mijn script die in de topicstart staat al een aardig eind. Mis ik daar nog iets in wat ik nodig heb voor de bijlage gedeelte dan? Want zoals ik overal kan lezen is het geen wat ik nodig heb al aanwezig in het script.
*Ik heb een apparte attachment function geschreven
*headers boundry en multipart/mixed zitten er ook in

Reageren