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
Share on other sites

This thread is more than a year old. Please don't revive it unless you have something important to add.

Join the conversation

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

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

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

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.