Hallo, ik wil graag een mail-script maken dat bijlagen kan versturen.

Ik heb de volgende websites geraadpleegt:
http://www.phphulp.nl/php/scripts/1/262/
http://www.zend.com/zend/spotlight/sendmimeemailpart1.php
http://www.sitepoint.com/article/advanced-email-php/5

Zodoende ben ik tot het volgende voorbeeldje gekomen:

<?php
if(isset($_POST['submit'])){
	//scheidingsteken voor het e-mailtje (boundary)
	$bound = "web123456789core";
	
	//tekst uit het formulier
	$eigenaar = "Gert-Jan Bierkens";
	$mail_eigenaar = "[email protected]";
	$bezoeker = "John Johnson";
	$mail_bezoeker = "[email protected]";
	$titel = "titel";
	$bericht = "test";
	
	//het ge-uploade bestand
	$upload      = $_FILES['upload']['tmp_name']; 
	$bestandstype = $_FILES['upload']['type']; 
	$bestandsnaam = $_FILES['upload']['name'];
	
	//het bestand openen (read binary)
	if (is_uploaded_file($upload)) { 
		 $bestand = fopen($upload,'rb'); 
		 $inhoud = fread($bestand,filesize($upload)); 
		 fclose($bestand);
	}
	
	//headers voor mixed content
   	$headers = "From: " . $eigenaar . " <" . $mail_eigenaar . ">\r\n";
	$headers .= "To: " . $bezoeker . " <" . $mail_bezoeker . ">\r\n";
	$headers .= "Subject: " . $titel . "\r\n";
	$headers .= "Content-Transfer-Encoding: 7bit\r\n";
   	$headers .= "MIME-Version: 1.0\r\n";
   	$headers .= "Content-Type: multipart/mixed;";
	$headers .= "boundary=\"" . $bound . "\";";
    $headers .= "Content-Disposition:  attachment\r\n";

	$body = "--" . $bound;
	$body .= "Content-Type: text/html; charset=\"iso-8859-1\"\r\n";
	$body .= "Content-Transfer-Encoding: 7bit\r\n";
	$body .= $bericht;
			 
	$body .= "--" . $bound;
   	
	$body .= "Content-Type: application/octet-stream; name=" . $bestandsnaam . "\r\n";
	$body .= "Content-Transfer-Encoding: base64\r\n";
	$body .= "Content-disposition: attachment\r\n";
	$body .= chunk_split(base64_encode($inhoud)) . "\r\n";

	$body .= "--" . $bound; "--";
	
	mail($mail_eigenaar, $titel, $body, $headers);
}
?>
<form enctype="multipart/form-data" method="post" action="">
	<input type="file" name="upload" />
	<input type="submit" value="Verzenden" name="submit" />
</form>

</body>
</html>


De mail wordt verzonden, maar op 1 of andere manier pakt ie die headers niet :D Ik heb hier al vaker mee gestoeid... en op 1 of andere manier doe ik altijd iets fout met de headers (althans... dat denk ik) kan iemand me helpen?
net allemaal paste en copy werk, krijgt ie te horen dat ie wat anders moeten kiezen. Altijd fijn die hulp van Arjan. ;)
• Download de phpmailer class.
• Zet het bestand class.phpmailer.php in dezelfde map als die waarin je script wordt uitgevoerd.
• Include class.phpmailer.php in je script.
Gebruik onderdstaande code:

<?php
$mail = new PHPMailer ();
$mail->AddAddress ('[email protected]');
$mail->AddAttachment ('bestandsnaam');
$mail->From = '';
$mail->FromName = '';
$mail->AddReplyTo ('');
$mail->Subject = '';
$mail->Body = '';

if ($mail->Send ()) {
$msg = '<p>De mail is verzonden!</p>';
}

$mail->ClearAllRecipients ();
$mail->ClearAttachments ();
}
?>
2 fanatieken phpmailer fans.
Ik zal ff naar die phpmailer kijken! Thnx!

Maar inderdaad Kalle, dan is dit waarschijnlijk allemaal voor niets geweest. En ik ben al heel de avond bezig om te lezen over mime-types, headers ed. :-D
Niks is voor niks geweest. Je weet nu in ieder geval hoe het niet moet ;). Daar komt nog eens bij, stel dat het je wel was gelukt dan had je je hele leven lopen kutten met die mail(), nu weet je teminsten hoe het je voortaan een paar uur werk kan gaan besparen ;).

En waarschijnlijk zal je tijdens het 'inlezen' ook weer andere dingen geleerd hebben.
Kalle schreef op 21.03.2006 23:02
2 fanatieken phpmailer fans.


Oh, er zijn er véél meer. En terecht :-)
Handig ding daar ben ik het mee eens.
Ik ken phpmailer via Jan, dus Jan... mijn eeuwig respect :).
Ook handig: er zit ook een SMTP class bij. Dus als je een grote groepsmail wilt verzenden met veel BCC's en je host pikt het niet, dan kun je een andere SMTP server opgeven.

Reageren