Jump to content

wezken

New Members
  • Posts

    2
  • Joined

  • Last visited

wezken's Achievements

Newbie

Newbie (1/5)

0

Reputation

  1. Thanks for your replies, and ginerjm I will take your error reporting suggestion in future, saves constantly having to open the error.log file ! Actually I already tried PHP Mailer but my web host instantly objected, saying it was a code injection frailty or some such thing, so I had to remove it. The thing is, I'm so close. I can send an email with an attachment successfully with my code, it's just that it ignores any html formatting. Whereas if I send an email without an attachment the html is acted on. I just hoped that one of you php experts might spot something in my code which is causing this behaviour.
  2. Hello. I have created a php webpage which I can use to send an email around the group of musicians that I administer. The message part of the email is html so that I can structure it in certain ways, like bulleted lists, or making certain parts bold so they stand out. I need to be able to attach files from time to time and I have found out how to do that successfully, but I cant see how to have html formatted text and attach a file at the same time. I guess it might be something to do with '$headers .= "Content-type:text/mixed;charset=UTF-8" . "\r\n";' but if I change 'mixed' to 'html' I get the html formatting but it doesn't attach the file. I have given my code below. The way it works is that when the form is submitted, the code looks to see if a file attachment has been selected. If not, an error is thrown and that directs the code to the part that only sends the html email. If an attachment has been selected, there is no error and the code sends the email with the attachment, however the message is sent in plain text. I would be grateful if someone could point out what I am doing wrong. if(isset($_POST['button'])) { $from_email = '[email protected]'; //from mail, sender email address $recipient_email = '[email protected]'; //recipient email address //Load POST data from HTML form //$sender_name = $_POST["sender_name"]; //sender name //$reply_to_email = $_POST["sender_email"]; //sender email, it will be used in "reply-to" header $subject = $_POST["subjectfield"]; //subject for the email $message = $_POST["messagefield"]; //body of the email // Email body content //nl2br interprets line breaks $htmlContent = "<font face='Verdana' size='2' color='black'>" . $salutation . nl2br($_POST["messagefield"]) . "<font face='Arial' size='1' color='BLACK'><p>To reply use the Reply button</p> "; //Get uploaded file data using $_FILES array $tmp_name = $_FILES['attachment']['tmp_name']; // get the temporary file name of the file on the server $name = $_FILES['attachment']['name']; // get the name of the file $size = $_FILES['attachment']['size']; // get size of the file for size validation $type = $_FILES['attachment']['type']; // get type of the file $error = $_FILES['attachment']['error']; // get the error (if any) //validate form field for attaching the file if($error == 0) { //die('Upload error or No files uploaded'); //} //read from the uploaded file & base64_encode content $handle = fopen($tmp_name, "r"); // set the file handle only for reading the file $content = fread($handle, $size); // reading the file fclose($handle); // close upon completion $encoded_content = chunk_split(base64_encode($content)); $boundary = md5("random"); // define boundary with a md5 hashed value //header $mime_boundary = 'Multipart_Boundary_x'.md5(time()).'x'; $headers = "MIME-Version: 1.0\r\n"; // Defining the MIME version $headers .= "Content-type:text/html;charset=UTF-8" . "\r\n"; $headers .= "From:".$from_email."\r\n"; // Sender Email $headers .= "Reply-To: ".$reply_to_email."\r\n"; // Email address to reach back $headers .= "Content-Type: multipart/mixed;"; // Defining Content-Type $headers .= "boundary = $boundary\r\n"; //Defining the Boundary //plain text $body = "--$boundary\r\n"; $body .= "Content-Type: text/plain; charset=ISO-8859-1\r\n"; $body .= "Content-Transfer-Encoding: base64\r\n\r\n"; $body .= chunk_split(base64_encode($message)); //attachment $body .= "--$boundary\r\n"; $body .="Content-Type: $type; name=".$name."\r\n"; $body .="Content-Disposition: attachment; filename=".$name."\r\n"; $body .="Content-Transfer-Encoding: base64\r\n"; $body .="X-Attachment-Id: ".rand(1000, 99999)."\r\n\r\n"; $body .= $encoded_content; // Attaching the encoded file with email $sentMailResult = mail($recipient_email, $subject, $body, $headers); }else{ //header $headers = "MIME-Version: 1.0" . "\r\n"; $headers .= "Content-type:text/html;charset=UTF-8" . "\r\n"; // More headers $headers .= "From:".$from_email."\r\n"; // Sender Email $headers .= "Message:" . $message ."\r\n"; $sentMailResult = mail($recipient_email, $subject, $htmlContent, $headers); } if($sentMailResult ) { echo "<h3>File Sent Successfully.<h3>"; // unlink($name); // delete the file after attachment sent. } else { die("Sorry but the email could not be sent. Please go back and try again!"); } }
×
×
  • 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.