Forum Moderators: coopster

Message Too Old, No Replies

PHP Form Mail

         

lZakl

11:30 pm on Dec 9, 2004 (gmt 0)

10+ Year Member



I am using a version of php mailer on our site. I was having a problem with attaching, but that issue has been resolved.

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>");
}
}
?>

Salsa

7:40 am on Dec 10, 2004 (gmt 0)

10+ Year Member



I didn't look through all your code, but only a little near the end for what I immediately thought might be the problem. Maybe you should put these three lines:

$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.

lZakl

8:19 pm on Dec 10, 2004 (gmt 0)

10+ Year Member



Now THAT would seem logical huh? I'll try that.. I'll post back whether it worked or not... :0)

Thanks for your effort... Hope it works!

lZakl

10:14 pm on Dec 10, 2004 (gmt 0)

10+ Year Member



Sure enough the conditional worked! Thanks for taking a look again, I really do appreciate it! It was trying to attach even though there was nothing TO attach.

Thanks Again!