Forum Moderators: coopster
My new problem is actually quite humorous (in my opinion, because I know it's something simple I'm missing). I can now send mail with an attachment. YEAH! However if I leave the attachment field blank, the only things to come through in my email are the FROM, and SUBJECT. I don't get the body message. So, I'll wrap it up for you:
I send WITH attachment, all is GREAT!
I sent WITHOUT attachment, I get nothing but FROM & SUBJECT. No Body or header.
Here is my code Hope someone can help!?!?!?!
<?php
//----------------------------------------------
function checkfileatt($fname,$fsize){
global $max_size;
global $banned_ext;
$err="No file attached";
//Checking file type in or out of banned file extensions list
$pos1=strrchr($fname,".");
$ftype=str_replace(".","",$pos1);
$blist=explode("¦",$banned_ext);
for($i=0;$i<sizeof($blist)-1;$i++){
if($ftype==$blist[$i]) $err="ERROR: Your file extension (<b>*.$ftype</b>) is not be accepted.";
}
//Check file size
if(round($fsize/1024)>$max_size) $err="ERROR: Your file size (<b>" .round($fsize/1024) ."</b> Kb) is too large. We only accept <b>$max_size</b> Kb.";
//Return the value
return $err;
}
function formathtml($text){
$text=stripslashes($text);
$text=str_replace("\r\n","<BR>",$text);
$text=str_replace("\n","<BR>",$text);
return $text;
}
function checkemail($email){
if(!eregi("^[A-za-z0-9\_\.-]+@[A-za-z0-9\_\.-]+.[A-za-z0-9\_-]+.*",$email) ¦¦ empty($email))
return FALSE;
else return TRUE;
}
//----------------------------------------------
if($mail_mode==0) $email_to=$email_to_anonymous;
else $email_to=$my_email;
if($version=="demo") {
$email_from="anonymous@anonymous-server.com";
$real_email_message.="<br>------------<br>Demo email sent from <a href=http://obiewebsite.sourceforge.net target=_blank>http://ObieWebsite.SourceForge.Net</a><br>Get more PHP and Javascripts for FREE!<br>";
}
$kt=0;
//Checking valid email address
if(!checkemail($email_to)) $kt=1;
if(!checkemail($email_from)) $kt=1;
if(empty($email_subject)) $kt=2;
if($kt==1) print("<p>ERROR: Email address (From email or To email) is not correct</p>");
else if($kt==2) print("<p>ERROR: Your email Subject is blank</p>");
if($kt==0){
$users_mail = $email_from;
$email_from = "web_ads@ourdomain.com";
$real_email_message = "This ad was sent from: <b>$users_mail</b> \n\n Their IP was logged as <b>$ip</b> \n\n The host name was resloved as <b>$domain</b> \n\n <b>Message:</b> $real_email_message \n\n The host information given in this emal heading is for troubleshooting and reporting abuse. Rest assured that this information is discarded once the requst has been fulfilled. \n\n";
//BEGIN //----------------------------------------------
$email_message=formathtml($real_email_message);
$chked=0;
if ($upfile == "none" ¦¦ $upfile_size==0) $chked=1;
if (checkfileatt($upfile_name,$upfile_size)!="No file attached") $chked=1;
if($chked==0) {
copy($upfile, $upfile_name);
$fileatt=$upfile_name;
$fileatt_type=$upfile_type;
$fileatt_name=$upfile_name;
$file = fopen($fileatt,'rb');
$data = fread($file,filesize($fileatt));
fclose($file);
}
$headers = "From: ".$email_from;
$semi_rand = md5(time());
$mime_boundary = "==Multipart_Boundary_x{$semi_rand}x";
$headers .= "\nMIME-Version: 1.0\n" . "Content-Type: multipart/mixed;\n" . " boundary=\"{$mime_boundary}\"";
$email_message = "This is a multi-part message in MIME format.\n\n" . "--{$mime_boundary}\n" . "Content-Type:text/html; charset=\"iso-8859-1\"\n" . "Content-Transfer-Encoding: 7bit\n\n" . $email_message . "\n\n";
$data = chunk_split(base64_encode($data));
$email_message .= "--{$mime_boundary}\n" . "Content-Type: {$fileatt_type};\n" . " name=\"{$fileatt_name}\"\n" . "Content-Disposition: attachment;\n" . " filename=\"{$fileatt_name}\"\n" . "Content-Transfer-Encoding: base64\n\n" . $data . "\n\n" ."--{$mime_boundary}--\n";
$sending_ok = @mail($email_to, $email_subject, $email_message, $headers);
if($chked==0) unlink($upfile_name);
//END mode 3 and 0//----------------------------------------------
//Print the email result
if($sending_ok){
print("<title>Sending successful to $email_to</title><div align=center><p>Email sending successful</p>");
}
else print("<title>Sending failed to $email_to</title><div align=center><p><b>ERROR in mail server</b> Your email could not been sent</p>");
print("
<p><table border=0 width=80% cellspacing=1 bgcolor=#70DFA7><tr><td bgcolor=#F0F0F0>
<p><u><b>Sent to email</b></u><br>
$email_to
<p><u><b>From email</b></u><br>
$users_mail
<p><u><b>Email subject</b></u><br>
$email_subject
<p><u><b>Body</b></u><p>
<table border=0 width=100% cellspacing=1 style=\"border: 1 dotted #70DFA7;\"><tr><td>");
print(formathtml($real_email_message));
print("</td></tr></table><p><br></p>
<p align=center><a href=$my_url title=\"Come back to my site\">Thank you, back to my site</a> or <a href=index.php>Send me another email</a></p>
<p><br></p>
</td></tr></table>
<p><b>Attachment status</b>
<p><table border=0 width=80% cellspacing=1 bgcolor=#70DFA7><tr><td bgcolor=#70DFA7>");
if($mail_mode==0 ¦¦ $mail_mode==1) {
if($chked==0) print("<p><b>$upfile_name</b><br>Filesize: " .round($upfile_size/1024) ." Kb ¦ Filetype : $upfile_type");
else print("<p>" .checkfileatt($upfile_name,$upfile_size) ."</p>");
}
}
?>
$data = chunk_split(base64_encode($data));
$email_message .= "--{$mime_boundary}\n" . "Content-Type: {$fileat...
$data . "\n\n" ."--{$mime_boundary}--\n";
...in a condition like you did with:
if($chked==0) {
copy($upfile, $upfile_name);
...
} I hope this helps.