Jump to content

Help With Attaching Image To Php Mailform Please


Recommended Posts

I am trying to use a mailform to send an image from a webpage to the viewer. In most cases this works fine... 100% to web based email accounts and 50% to POP mail accounts on Mac and PC.


In the cases that fail, the mail arrives but the images is displayed simply as code in the body of the mail. I am unsure why sometimes it works and sometimes not (all testing the same image files).


Here are the 2 pages of code I am using. Does anyone see something wrong that I have missed?


Thanks for any suggesstions





form.php (only sensitive server info has been altered):



if(isset($_POST['Submit'])) {

$guestemail = $_POST['guestemail'];

if ($guestemail <> "") {





mail_attach($guestemail,$mymail,$subject,"Here is the photo you requested.\n","img.jpg",$data,3,"application/octet-stream", "$headers");



<p><font color="#0000CC"><i><b>Image Sent.</b></i></font></p>


} else {



<p><font color="#FF0000"><b><i>Could not send image.</i></b></font></p>





<form name="mailpic" action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">

<p>Enter your E-mail:

<input type="text" name="guestemail" size="20">

<input type="submit" name="Submit" value="Send">








function mail_attach($to,$from,$subject,$body,$fname,$data,




$mime_boundary = "<<<:" . md5(uniqid(mt_rand(), 1));

$fdata = chunk_split(base64_encode($data));


$headers .= "From: $from\r\n";

$headers .= "To: $to\r\n";

$headers .= "MIME-Version: 1.0\r\n";

$headers .= "X-Priority: $priority\r\n";

$headers .= "Content-Type: multipart/mixed;\r\n";

$headers .= " boundary=\"" . $mime_boundary . "\"\r\n";

$mime = "This is a multi-part message in MIME format.\r\n";

$mime .= "\r\n";

$mime .= "--" . $mime_boundary . "\r\n";

$mime .= "Content-Type: text/plain; charset=\"iso-8859-1\"\r\n";

$mime .= "Content-Transfer-Encoding: 7bit\r\n";

$mime .= "\r\n";

$mime .= $body . "\r\n";

$mime .= "--" . $mime_boundary . "\r\n";

$mime .= "Content-Disposition: attachment;\r\n";

$mime .= "Content-Type: $type; name=\"$fname\"\r\n";

$mime .= "Content-Transfer-Encoding: base64\r\n\r\n";

$mime .= $fdata . "\r\n";

$mime .= "--" . $mime_boundary . "\r\n";

mail($to, $subject, $mime, $headers);





Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Create New...