View Single Post
  #4  
Old 09-20-2007, 01:50 PM
justoneproblem is offline justoneproblem
Registered User

Join Date: Sep 2007
Posts: 1

hehe it did not work

Hi, just install the script on my server. I try out the mailtest and manage to send an email. However when finish editing phMailer.php and uploaded it to the server, I was not able to send any message plus the drop down box did not appear. I have paste the edited PhMailer.php, any suggestion would be great

Code:
<?php
error_reporting(0);
/*
//================================================================================
* phphq.Net Custom PHP Scripts *
//================================================================================
:- Script Name: phMailer
:- Version: 1.5
:- Release Date: Jan 27th 2004
:- Last Update: Dec 9th 2005
:- Author: Scott L. <scott@phphq.net> http://www.phphq.net
:- Copyright(c) 2005 All Rights Reserved
:-
:- This script is free software; you can redistribute it and/or modify
:- it under the terms of the GNU General Public License as published by
:- the Free Software Foundation; either version 2 of the License, or
:- (at your option) any later version.
:-
:- This script is distributed in the hope that it will be useful,
:- but WITHOUT ANY WARRANTY; without even the implied warranty of
:- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
:- GNU General Public License for more details.
:-http://www.gnu.org/licenses/gpl.txt

// This will show in the <title></title> and the form name
$websitename="Dedicate A Song"; 

// Allowed file types. Please remember to keep the format of this array, add the file extensions you want WITHOUT the dot. Please also be aware that certain file types may cause harm to your website and/or server.
$allowtypes=array("zip", "7zip");

// What's your email address? Seperate email addresses with commas for multiple email addresses.
$myemail="email1@myemail.com";

// What priority should the script send the mail? 1 (Highest), 2 (High), 3 (Normal), 4 (Low), 5 (Lowest).
$priority="3"; 

// Should we allow visitors to attach files? How Many? 0 = Do not allow attachments, 1 = allow only 1 file to be attached, 2 = allow two files etc.
$allowattach="1"; 

// Maximum file size for attachments in KB NOT Bytes for simplicity. MAKE SURE your php.ini can handel it, post_max_size, upload_max_filesize, file_uploads, max_execution_time!
// 2048kb = 2MB,       1024kb = 1MB,     512kb = 1/2MB etc..
$max_file_size="1024";

// Maximum file size for all attachments combined in KB NOT Bytes! MAKE SURE your php.ini can handel it, post_max_size, upload_max_filesize, file_uploads, max_execution_time!
// 2048kb = 2MB,       1024kb = 1MB,     512kb = 1/2MB etc..
$max_file_total="2048";

// Value for the Submit Button
$submitvalue=" Dedicate "; 

// Value for the Reset Button
$resetvalue=" Reset ";

// Default subject? This will be sent if the user does not type in a subject
$defaultsubject="Song Dedication"; 

// Because many requested it, this feature will add a drop down box for the user to select a array of subjects that you specify below. 
// True = Use this feature, False = do not use this feature
$use_subject_drop=True;
musi
// This is an array of the email subjects the user can pick from. Make sure you keep the format of this array or you will get errors!
// Look at http://phphq.net/forums/viewtopic.php?p=836 for examples on how to use this feature.
$subjects=array("Request Song","Song Dedication","Send DJ an Email");

// This is an array of the email address for the array above. There must be an email FOR EACH array value specified above. You can have only 1 department if you want.
//YOU MUST HAVE THE SAME AMMOUNT OF $subjects and $emails or this WILL NOT work correctly! The emails also must be in order for what you specify above!
// You can also seperate the emails by a comma to sent 1 department to multiple email addresses.
$emails=array("email1@myemail.com","email2@myemail.com","email3@myemail.com");

$thanksmessage="Thank you! Your email has been sent, we will respond shortly."; 
$thanksmessage="<script type=\"text/javascript\">window.location=\"http://www.domain.com/tky.html\";</script>"; 
// Uncomment (remove the //'s) above to use redirect



/*
//================================================================================
* ! ATTENTION !
//================================================================================
: Don't edit below this line unless you know some php. Editing some variables or other stuff could cause undeseriable results!!
*/

// Will get the extension of the users file. For some reason trying to get the actual type of the file caused problems with certain browsers.

function get_ext($key) { 
	$key=strtolower(substr(strrchr($key, "."), 1));
	// Cause there the same right?
	$key=str_replace("jpeg","jpg",$key);
	return $key;
}

function phattach($file,$name) {
	global $boundary;
	
	$fp=@fopen($file,"r");
	$str=@fread($fp, filesize($file));
	$str=@chunk_split(base64_encode($str));
	$message="--".$boundary."\n";
	$message.="Content-Type: application/octet-stream; name=\"".$name."\"\n";
	//$message.="Content-disposition: attachment\n"; Thanks goes to someone named Chris (I think, it was awhile ago) for his fix below!
	$message.="Content-disposition: attachment; filename=\"".$name."\"\n"; 
	$message.="Content-Transfer-Encoding: base64\n";
	$message.="\n";
	$message.="$str\n";
	$message.="\n";

	return $message;
}

//Little bit of security from people forging headers. People are mean sometimes :(
function clean($key) {
	$key=str_replace("\r", "", $key);
	$key=str_replace("\n", "", $key);
	$find=array(
		"/bcc\:/i",
		"/Content\-Type\:/i",
		"/Mime\-Type\:/i",
		"/cc\:/i",
		"/to\:/i"
	);
  $key=preg_replace($find,"",$key);
  return $key;
}

// Safe for register_globals=on =)

$error="";
$types="";
$sent_mail=false;

// Do some loopy stuff for the valid file types so people can see what types are valid before they try and upload invalid ones.

$ext_count=count($allowtypes);
$i=0;

foreach($allowtypes AS $extension) {
	
	//Gets rid of the last comma
	
	If($i <= $ext_count-2) {
		$types .="*.".$extension.", ";
	} Else {
		$types .="*.".$extension;
	}
	$i++;
}
unset($i,$ext_count); // why not


// If they post the form start the mailin'!

If($_POST['submit']==true) {
	extract($_POST, EXTR_SKIP);

		// Check the form for errors
	
		If(trim($yourname)=="") { 
			$error.="You did not enter your name!<br />";
		}
		
		If(trim($youremail)=="") { 
			$error.="You did not enter your email!<br />";
		} Elseif(!eregi("^([a-z0-9_]|\\-|\\.)+@(([a-z0-9_]|\\-)+\\.)+[a-z]{2,4}\$",$youremail)) {
			$error.="Invalid email address.<br />";
		}

		If(trim($emailsubject)=="") {
			$emailsubject=$defaultsubject;
		}

		If(trim($yourmessage)=="") { 
			$error.="You did not enter a message!<br />";
		}
		
		// Verify Attchment info
		
		If($allowattach > 0) {
			
			//Loopish
			
			For($i=0; $i <= $allowattach-1; $i++) {
				
				If($_FILES['attachment']['name'][$i]) {
					
					$ext=get_ext($_FILES['attachment']['name'][$i]);
					$size=$_FILES['attachment']['size'][$i];
					$max_bytes=$max_file_size*1024;
					
					//Check if the file type uploaded is a valid file type. 
					
					If(!in_array($ext, $allowtypes)) {
						
						$error.= "Invalid extension for your file: ".$_FILES['attachment']['name'][$i].", only ".$types." are allowed.<br />";
						
						//Check the size of each file
						
					} Elseif($size > $max_bytes) {
						$error.= "Your file: ".$_FILES['attachment']['name'][$i]." is to big. Max file size is ".$max_file_size."kb.<br />";
					}
					
				} // If Files
				
			} // For

			//Tally the size of all the files uploaded, check if it's over the ammount.
			
  			$total_size=array_sum($_FILES['attachment']['size']);
  			
			$max_file_total_bytes=$max_file_total*1024;
			
			If($total_size > $max_file_total_bytes) {
				$error.="The max size allowed for all your files is ".$max_file_total."kb<br />";
			}
			
		} // If Allowattach

	If($error) {
	
		$display_message=$error;

	} Else {
		
		If($use_subject_drop AND is_array($subjects) AND is_array($emails)) {
			$subject_count=count($subjects);
			$email_count=count($emails);
			
			If($subject_count==$email_count) {
				
				$myemail=$emails[$emailsubject];
				$emailsubject=$subjects[$emailsubject];
				
			}
			
		}
		
		
		$boundary=md5(uniqid(time()));
		
		//Little bit of security from people forging headers. People are mean sometimes :(
		
		$yourname=clean($yourname);
		$yourmessage=clean($yourmessage);
		$youremail=clean($youremail);
		
		//Headers
		
		$headers="From: ".$yourname." <".$youremail.">\n";
		$headers.="Reply-To: ".$yourname." <".$youremail.">\n";
		$headers.="MIME-Version: 1.0\n";
		$headers.="Content-Type: multipart/mixed; boundary=\"".$boundary."\"\n";
		$headers.="X-Sender: ".$_SERVER['REMOTE_ADDR']."\n";
		$headers.="X-Mailer: PHP/".phpversion()."\n";
		$headers.="X-Priority: ".$priority."\n"; 
		$headers.="Return-Path: <".$youremail.">\n";
		$headers.="This is a multi-part message in MIME format.\n";

		//Message
			
		$message = "--".$boundary."\n";
		$message.="Content-Type: text/plain; charset=\"iso-8859-1\"\n";
		$message.="Content-Transfer-Encoding: quoted-printable\n";
		$message.="\n";
		$message.="$yourmessage";
		$message.="\n";

		//Lets attach to something! =)
		
		If($allowattach > 0) {
			
			For($i=0; $i <= $allowattach-1; $i++) {
				
				If($_FILES['attachment']['name'][$i]) {
					
					$message.=phattach($_FILES['attachment']['tmp_name'][$i],$_FILES['attachment']['name'][$i]);
					
				}
				
			} //For
			
		} // If
		
		
		// End the message
		
		$message.="--".$boundary."--\n";
		
		// Send the completed message
		
		If(!mail($myemail,$emailsubject,$message,$headers)) {
			
			Exit("An error has occured, please report this to the website administrator.\n");
			
		} Else {
		
			$sent_mail=true;
			
		}

	} // Else

} // $_POST

/*
//================================================================================
* Start the form layout
//================================================================================
:- Please know what your doing before editing below. Sorry for the stop and start php.. people requested that I use only html for the form..
*/
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Language" content="en-us" />
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title><?php echo $websitename; ?></title>

<style type="text/css">
	body{
		background-color:#FFFFFF;
		font-family: Verdana, Arial, sans-serif;
		font-size: 12pt;
		color: #000000;
	}
	
	.error_message{
		font-family: Verdana, Arial, sans-serif;
		font-size: 11pt;
		color: #FF0000;
	}
	
	.thanks_message{
		font-family: Verdana, Arial, sans-serif;
		font-size: 11pt;
		color: #000000;
	}
	
	a:link{
		text-decoration:none;
		color: #000000;
	}
	a:visited{
		text-decoration:none;
		color: #000000;
	}
	a:hover{
		text-decoration:none;
		color: #000000;
	}
	
	
	.table {
		border-collapse:collapse;
		border:1px solid #000000;
		width:500px;
	}
	
	.table_header{
		border:1px solid #070707;
		background-color:#C03738;
		font-family: Verdana, Arial, sans-serif;
		font-size: 11pt;
		font-weight:bold;
		color: #FFFFFF;
		text-align:center;
		padding:2px;
	}
	
	.attach_info{
		border:1px solid #070707;
		background-color:#EBEBEB;
		font-family: Verdana, Arial, sans-serif;
		font-size: 8pt;
		color: #000000;
		padding:4px;
	}
	
	
	.table_body{
		border:1px solid #070707;
		background-color:#EBEBEB;
		font-family: Verdana, Arial, sans-serif;
		font-size: 10pt;
		color: #000000;
		padding:2px;
	}
	
	
	.table_footer{
		border:1px solid #070707;
		background-color:#C03738;
		text-align:center;
		padding:2px;
	}
	
	
	input,select,textarea {
		font-family: Verdana, Arial, sans-serif;
		font-size: 10pt;
		color: #000000;
		background-color:#AFAEAE;
		border:1px solid #000000;
	}
	
	.copyright {
		border:0px;
		font-family: Verdana, Arial, sans-serif;
		font-size: 9pt;
		color: #000000;
		text-align:right;
	}
	
	form{
		padding:0px;
		margin:0px;
	}
</style>


<script type="text/javascript">
var error="";
e_regex = /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,})+$/;

function Checkit(theform) {
	
	if(theform.yourname.value=="") {
		error+="You did not enter your name\n";
	}
	
	if(theform.youremail.value=="") {
		error+="You did not enter your email\n";
	} else if(!e_regex.test(theform.youremail.value)) {
		error+="Invalid email address\n";
	}
		
	if(theform.yourmessage.value=="") {
		error+="You did not enter your message\n";
	}
	
	if(error) {
		alert('**The form returned the following errors:**\n\n' + error);
		error="";
		return false;
	} else {
		return true;
	}
}
</script>


</head>
<body>
<?If($display_message) {?>

<div align="center" class="error_message"><b><?=$display_message;?></b></div>
<br />

<?}?>

<?If($sent_mail!=true) {?>

<form method="post" action="<?=$_SERVER['PHP_SELF'];?>" enctype="multipart/form-data" name="phmailer" onsubmit="return Checkit(this);">
<table align="center" class="table">
	<tr>
		<td colspan="2" class="table_header" width="100%"><?=$websitename;?></td>
	</tr>
	<?If($allowattach > 0) {?>
		<tr>
			<td width="100%" class="attach_info" colspan="2">
				<b>Valid Attachment Types:</b> <?=$types?><br />
				<b>Max size per file:</b> <?=$max_file_size?>kb.<br />
				<b>Max combined file size:</b> <?=$max_file_total?>kb.
			</td>
		</tr>
	<?}?>
	
	<tr>
		<td width="30%" class="table_body">Your Name:</td>
		<td width="70%" class="table_body"><input name="yourname" type="text" size="30" value="<?=stripslashes(htmlspecialchars($yourname));?>" /><span class="error_message">*</span></td>
	</tr>
	<tr>
		<td width="30%" class="table_body">Your Email:</td>
		<td width="70%" class="table_body"><input name="youremail" type="text" size="30" value="<?=stripslashes(htmlspecialchars($youremail));?>" /><span class="error_message">*</span></td>
	</tr>
	<tr>
		<td width="30%" class="table_body">Subject:</td>
		<td width="70%" class="table_body">
		
			<?If($use_subject_drop AND is_array($subjects)) {?>
					<select name="emailsubject" size="1">
						<?while(list($key,$val)=each($subjects)) {?>

							<option value="<?=intval($key);?>"><?=htmlspecialchars(stripslashes($val));?></option>
						
						<?}?>
					</select>
				
			
			<?} Else {?>
				
				<input name="emailsubject" type="text" size="30" value="<?=stripslashes(htmlspecialchars($emailsubject));?>" />
				
			<?}?>
			
		</td>
	</tr>

<?For($i=1;$i <= $allowattach; $i++) {?>
	<tr>
		<td width="30%" class="table_body">Attach File:</td>
		<td width="70%" class="table_body"><input name="attachment[]" type="file" size="30" /></td>
	</tr>
<?}?>

	<tr>
		<td colspan="2" width="100%" class="table_body">Your Message:<span class="error_message">*</span><br />
			<div align="center">
				<textarea name="yourmessage" rows="8" cols="60"><?=stripslashes(htmlspecialchars($yourmessage));?></textarea>
			</div>
		</td>
	</tr>
	<tr>
		<td colspan="2" width="100%" class="table_footer">
			<input type="hidden" name="submit" value="true" />
			<input type="submit" value="Send Dedication" /> &nbsp;
			<input type="reset" value="Reset" />
		</td>
	</tr>
</table>
</form>

<?} Else {?>

<div align="center" class="thanks_message"><?=$thanksmessage;?></div>
<br />
<br />

<?}?>

<?//Please leave this here.. it really dosen't make people hate you or make your site look bad.. ?>
<table class="table" style="border:0px;" align="center">
	<tr>
		<td><div class="copyright">&copy;<a href="http://www.phphq.net?script=phMailer" target="_blank" title="Form Mailer Powered By phMailer &lt;www.phphq.net&gt;">phMailer</a></div></td>
	</tr>
</table>
</body>
</html>

Thanks
Reply With Quote