Jump to content

Support Email Form with Attachment


Lusey

Recommended Posts

I'm pretty new to PHP, and by new, I mean I have never done it or any other form of coding before starting my job a month or so ago. I've basically been manually trying to pick up PHP as I go. The website that I am working on had its core built, but I am trying to add functionality to it.

 

The website already had the contact for that you can see here: http://www.janova.us/index.php/contact

The form would submit an email to an email address based on which subject was picked.

 

 

I have since added a simple file upload field. My problem, however, is tying in the form to the email. I need to upload it and then send it as an attachment with the email.

 

Here is what I am working with currently:

<div id="breadCrumbs">
  <a href="index.php">MAIN</a>
    >
  <a href="index.php/contact">CONTACT</a>
</div>
<?

$user =& JFactory::getUser();
$user_id = $user -> get('id');
$user_name = $user -> get('name');

$db = JFactory::getDBO();
$query = "SELECT jos_content.introtext, jos_content.fulltext FROM jos_content WHERE catid = 68 AND sectionid = 5 LIMIT 0,3";
$db->setQuery($query);
$rows = $db->loadRowList();


?>
<div id="contactTop">
<div id="contactBanner"></div>
<div id="contactInfo">
<?
echo $rows[0][0];
echo $rows[0][1];
?>
</div>
</div>
<div id="contactGreeting">
<?
echo $rows[1][0];
echo $rows[1][1];
?>
</div>
<?
if($user_id > 0)
{
$query = "SELECT jos_users.name, jos_users.email FROM jos_users WHERE id = ".$user_id;
$db->setQuery($query);
$user_data = $db->loadRow();
}


if(isset($_POST["submit"]))
{
$error = false;
$subjectError = false;
$messageError = false;
$nameError = false;
$emailError = false;

if(!isset($_POST["subject"]) || empty($_POST["subject"]))
{
	$error = true;
	$subjectError = true;
}
if(!isset($_POST["message"]) || empty($_POST["message"]))
{
	$error = true;
	$messageError = true;
}
if(!isset($_POST["name"]) || empty($_POST["name"]))
{
	$error = true;
	$nameError = true;
}
if(!isset($_POST["email"]) || empty($_POST["email"]))
{
	$error = true;
	$emailError = true;
}
else if(!ereg("^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}$",$_POST["email"]))
{
	$error = true;
	$emailError = true;
	echo $_POST["email"];
}
if(!$error)
{
	$to = $_POST["subject"]."@janova.us";
	$from = $_POST["email"];
	$subject = $_POST["subject"]." by: ".$_POST["name"];
	$message = $_POST["subject"]."\n\r\n\r".$_POST["message"]."\n\r\n\r-".$_POST["name"];
	$headers = "From: $from";

<!----------BEGIN ADDED CODE------------------------->          
                // Obtain file upload vars
                $fileatt      = $_FILES['fileatt']['tmp_name'];
                $fileatt_type = $_FILES['fileatt']['type'];
                $fileatt_name = $_FILES['fileatt']['name'];



                         if (is_uploaded_file($fileatt)) {
                         // Read the file to be attached ('rb' = read binary)
                         $file = fopen($fileatt,'rb');
                         $data = fread($file,filesize($fileatt));
                         fclose($file);

                         // Generate a boundary string
                         $semi_rand = md5(time());
                         $mime_boundary = "==Multipart_Boundary_x{$semi_rand}x";

                         // Add the headers for a file attachment
                            $headers .= "\nMIME-Version: 1.0\n" .
                            "Content-Type: multipart/mixed;\n" .
                            " boundary=\"{$mime_boundary}\"";

                         // Add a multipart boundary above the plain message
                         $message = "This is a multi-part message in MIME format.\n\n" .
                            "--{$mime_boundary}\n" .
                            "Content-Type: text/plain; charset=\"iso-8859-1\"\n" .
                            "Content-Transfer-Encoding: 7bit\n\n" .
                             $message . "\n\n";

                         // Base64 encode the file data
                         $data = chunk_split(base64_encode($data));

                         // Add file attachment to the message
                         $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";
                         }

<!-----------END ADDED CODE---------------->

                mail($to,$subject,$message,$headers);
	echo "Your request has been submitted.";



}
else
{
?>
	<form action="#" id="contactForm" method="post">
	 	<div id="contactFormLeft">
<?
	if($user_id > 0)
	{
?>
			<label>
				Your name<?
				if($nameError)
				{
					?><span class="formError">*</span><?
				}?>
			</label><br/>
			<input type="text" name="name" value="<?=$user_data[0];?>"/><br/>
			<label>
				Your email<?
				if($emailError)
				{
					?><span class="formError">*</span><?
				}?>
			</label><br/>
			<input type="text" name="email" value="<?=$user_data[1];?>"/><br/>
<?
	}
	else
	{
?>
			<label>
				Your name<?
				if($nameError)
				{
					?><span class="formError">*</span><?
				}?>
			</label><br/>
			<input type="text" name="name" value="<?=$_POST["name"];?>"/><br/>
			<label>
				Your email<?
				if($emailError)
				{
					?><span class="formError">*</span><?
				}?>
			</label><br/>
			<input type="text" name="email" value="<?=$_POST["email"];?>"/><br/>
<?
	}
?>

			<label>
				Subject<?
				if($subjectError)
				{
					?><span class="formError">*</span><?
				}?>
			</label><br/>
			<select name="subject">
				<option value="support" <? if($_POST["subject"]=="support") { echo "selected ";}?>>Support</option>
				<option value="training" <? if($_POST["subject"]=="training") { echo "selected ";}?>>Training</option>
				<option value="hr" <? if($_POST["subject"]=="hr") { echo "selected ";}?>>HR</option>
                                        <option value="sales" <? if($_POST["subject"]=="sales") { echo "selected ";}?>>Consultation</option>
			</select>
			<br/>
			<input type="submit" id="submit"  name="submit" value=""/><br/>
		</div>
		<div id="contactFormRight">
			<label>
				Message<?
				if($messageError)
				{
					?><span class="formError">*</span><?
				}?>
			</label><br/>
			<textarea name="message"><?=$_POST["message"];?></textarea><br/>
		</div>
	</form>
<?
}
}
else
{
?>
<!--Request More Info AKA Contact Page-->

<!--Intro Text from Article-->

<form action="#" id="contactForm" method="post">
	<div id="contactFormLeft">
<?
if($user_id > 0)
{
?>
		<label>
			Your name
		</label><br/>
		<input type="text" name="name" value="<?=$user_data[0];?>"/><br/>
		<label>
			Your email
		</label><br/>
		<input type="text" name="email" value="<?=$user_data[1];?>"/><br/>
<?
}
else
{
?>
		<label>
			Your name
		</label><br/>
		<input type="text" name="name" value="<?=$_POST["name"];?>"/><br/>
		<label>
			Your email
		</label><br/>
		<input type="text" name="email" value="<?=$_POST["email"];?>"/><br/>
<?
}
?>
		<label>
			Subject
		</label><br/>
		<select name="subject">
			<option value="support" <? if($_POST["subject"]=="support") { echo "selected ";}?>>Support</option>
                                <option value="sales" <? if($_POST["subject"]=="sales") { echo "selected ";}?>>Consultation</option>
			<option value="training" <? if($_POST["subject"]=="training") { echo "selected ";}?>>Training</option>
			<option value="hr" <? if($_POST["subject"]=="hr") { echo "selected ";}?>>HR</option>
		</select>
		<br/>
		<input type="submit" id="submit" name="submit" value=""/>
	</div>
	<div id="contactFormRight">
		<label>
			Message
		</label><br/>
		<textarea name="message"><?=$_POST["message"];?></textarea><br/>
<!-----------ADDED FILE UPLOAD BOX ------------------>
      <label>
		         Attach File: 
		         </label>
		         <br/>
		         <input type="hidden" name="MAX_FILE_SIZE" value="100000" />
		         <input type="file"   name="fileatt"  />
		         <br/>
<!------------END FILE UPLOAD BOX--------------------->
	</div>
</form>
<?
}
?>

 

I have commented the changes I have added to the original code so that you can see what I have done. Any input on this would be greatly appreciated. Thanks.

Link to comment
https://forums.phpfreaks.com/topic/211522-support-email-form-with-attachment/
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.