[Last Call] Learn how to a build a cloud-first strategyRegister Now

x
?
Solved

Line breaking new array's when posting to email

Posted on 2010-01-04
6
Medium Priority
?
344 Views
Last Modified: 2013-12-12
Using the code below I'm trying to modify a web contact form from someone on the "net' to format the new array's I created which is the first part of the code snippet. The first 4 array's do not line break when returned via email. How do I get them to break? I have included snippets of what the author coded and had suggested and examples posted in the body here of what the results are for both the original and modified code.

Sent from MSC Contact form
==============================

Are you intersted in our Preventive Maintenance Program? Yes Would you like an appointment? Yes Client Information: Medical What Brand? Nikon
Name: test
E-mail: john@x.com
Tel/fax: 132
Country: Canada
Subject: Testing
Turing number: 2876
Please select this box in order to submit form Yes

Part B
------------------ When modified as the author suggest the form post is formatted as shown ----

Sent from MSC Contact form<b==============================<b<bAre you intersted in our Preventive Maintenance Program? Yes<bWould you like an appointment? Yes<bClient Information: Medical<bWhat Brand? Nikon<bName: test<bE-mail: john@pcshost.com<bTel/fax: 132<bCountry: Canada<bSubject: Testing<bTuring number: 2286<bPlease select this box in order to submit form Yes<b<btest<b


Part A ---> Code snippet from formxxx.php page

$contact_form_fields = array(
  
  array('name'    => 'Are you intersted in our Preventive Maintenance Program?',
        'type'    => 'select',
        'require' => 1,
        'default' => 'Select',
        'items'   => array('Yes',
                           'No')),
						   
  array('name'    => 'Would you like an appointment?',
        'type'    => 'select',
        'require' => 1,
        'default' => 'Select a Type',
        'items'   => array('Yes',
                           'No')),
						   
  array('name'    => 'Client Information:',
        'type'    => 'select',
        'require' => 1,
        'default' => 'Select a Type',
        'items'   => array('Medical',
                           'Industrial',
						   'Educational',
						   'Other')),
						   
 array('name'     => 'What Brand?',
        'type'    => 'select',
        'require' => 1,
        'default' => 'Select a Type',
        'items'   => array('Nikon',
                           'Olympus',
						   'Zeiss',
						   'Leitz',
						   'Wild',
						   'Leica',
						   'Reichert',
						   'B&L',
						   'A.O.',
						   'Mitutoyo',
						   'Swift',
						   'Other')),
  array('name'    => 'Name:',
        'type'    => 'name',
        'require' => 1),
  array('name'    => 'E-mail:',
        'type'    => 'email',
        'require' => 1),
  array('name'    => 'Tel/fax:',
        'type'    => 'input',
        'require' => 1),
  array('name'    => 'Country:',
        'type'    => 'select',
        'require' => 1,
        'default' => 'Select a Country',
        'items'   => array('Canada',
		                   'Germany',
						   'Mexico',
                           'United Kingdom',
                           'USA',
						   'Not Listed')),
  array('name'    => 'Subject:',
        'type'    => 'subject',
        'require' => 1),
  array('name'    => 'Message:',
        'type'    => 'textarea',
        'require' => 1),
  array('name'    => 'Attachment:',
        'type'    => 'upload',
        'require' => 0,
        'maxsize' => 128*1024),
  array('name'    => 'Turing number:',
        'type'    => 'turing',
        'require' => 1,
        'url'     => 'contact-form/image.php',
        'prompt'  => 'Enter the number displayed above'),
  array('name'    => '',
        'type'    => 'checkbox',
        'require' => 1,
        'prompt'  => 'Please select this box in order to submit form'));

$contact_form_graph           = false;
$contact_form_xhtml           = false;
$contact_form_email           = "testing@microscopeservicecenter.com";
$contact_form_encoding        = "utf-8";
$contact_form_default_subject = "Microscope Service Request";
$contact_form_message_prefix  = "Sent from MSC Contact form\r\n==============================\r\n\r\n";

include_once "contact-form/contact-form.php";

------------ End of form --------------
Part B
Here's a snippet from the contact-form.php page and what was suggested as a replacement to create the line break is as follows:
(the original code)
 Replace
    $mail_sent = contact_form_mail($contact_form_email, $esubj, $ehead .
 $ebody,
                                   "From: $ename $email>\r\n", 
 $contact_form_encoding,

 isset($_SESSION['contact-form-upload']) ?
 $_SESSION['contact-form-upload'] : array());

> with (suggested replacemnet to fix line breaks)

   $mail_sent = contact_form_mail($contact_form_email, $esubj, 
 strtr($ehead . $ebody, "\r\n", '<br>'),
                                  "From: $ename <$email>\r\n", 
 $contact_form_encoding,

 isset($_SESSION['contact-form-upload']) ?
 $_SESSION['contact-form-upload'] : array());

Open in new window

0
Comment
Question by:pcshost
  • 4
6 Comments
 
LVL 82

Expert Comment

by:hielo
ID: 26174582
where is your implementation/definition of contact_form_mail()?
0
 

Author Comment

by:pcshost
ID: 26176936

--- Here's the contact form itself. I'm a nube at this as well as an fyi. ---

<?php

$contact_form_msg_clear    = 'Clear';
$contact_form_msg_submit   = 'Submit';
$contact_form_msg_submit   = $contact_form_graph ? '' : $contact_form_msg_submit;

$contact_form_msg_sent     = 'Message sent';
$contact_form_msg_not_sent = 'Message not sent';
$contact_form_msg_invalid  = 'Please, correct the fields marked with red';

?>


<!-- ***** PHP ************************************************************* -->

<?php

// ***** contact_form_mail *****

function contact_form_mail($to, $subject, $message, $headers = '', $charset = 'utf-8', $files = array())
{
  if (!count($files))
  {
    $ext_headers  = $headers;
    $ext_headers .= "Content-Type: text/plain; charset=\"$charset\"\r\n";
    $ext_message  = $message;
  }
  else
  {
    $boundary = 'a6cd792e';
    while (true)
    {
      if (strpos($subject, $boundary) !== false ||
          strpos($message, $boundary) !== false) { $boundary .= dechex(rand(0, 15)) . dechex(rand(0, 15)); continue; }
      foreach ($files as $fi_name => $fi_data)
      if (strpos($fi_name, $boundary) !== false ||
          strpos($fi_data, $boundary) !== false) { $boundary .= dechex(rand(0, 15)) . dechex(rand(0, 15)); continue; }
      break;
    }

      $ext_headers  = $headers;
      $ext_headers .= "MIME-Version: 1.0\r\n";
      $ext_headers .= "Content-Type: multipart/mixed; boundary=\"$boundary\"\r\n";

      $ext_message  = "This is a multi-part message in MIME format.";
      $ext_message .= "\r\n--$boundary\r\n";

      $ext_message .= "Content-Type: text/plain; charset=\"$charset\"\r\n\r\n";
      $ext_message .= $message;
      $ext_message .= "\r\n--$boundary\r\n";

    foreach ($files as $i => $x)
    {
      $ext_message .= "Content-Type: {$x['type']}; name=\"{$x['name']}\"\r\n";
      $ext_message .= "Content-Disposition: attachment\r\n";
      $ext_message .= "Content-Transfer-Encoding: base64\r\n\r\n";
      $ext_message .= chunk_split(base64_encode($x['data']));
      $ext_message .= "\r\n--$boundary\r\n";
    }
  }

  $error_reportings = error_reporting(E_ERROR | E_PARSE);
  $res = mail($to, $subject, $ext_message, $ext_headers);
  $error_reportings = error_reporting($error_reportings);

  return $res;
}

// ***** contact_form_post *****

function contact_form_post($name)
{
  global $contact_form_encoding;
  if (isset($_POST[$name])) return htmlentities($_POST[$name], ENT_COMPAT, $contact_form_encoding);
  if (isset($_GET [$name])) return htmlentities($_GET [$name], ENT_COMPAT, $contact_form_encoding);
  return '';
}

// ***** Send Mail *****

if (count($_POST))
{
  if (get_magic_quotes_gpc() && !function_exists('strip_slashes_deep'))
  {
    function strip_slashes_deep($value)
    {
      if (is_array($value)) return array_map('strip_slashes_deep', $value);
      return stripslashes($value);
    }

    $_GET    = strip_slashes_deep($_GET);
    $_POST   = strip_slashes_deep($_POST);
    $_COOKIE = strip_slashes_deep($_COOKIE);
  }

  $patern_aux1 = "(\\w+(-\\w+)*)";
  $patern_aux2 = "($patern_aux1\\.)*$patern_aux1@($patern_aux1\\.)+$patern_aux1";

  $ename = '';
  $email = '';
  $esubj = $contact_form_default_subject;
  $ehead = $contact_form_message_prefix;
  $ebody = '';
  $valid = true;
  foreach ($contact_form_fields as $i => $x)
  {
    $_POST[$i] = isset($_POST[$i]) ? $_POST[$i] : '';

    if ($x['type'] === 'upload')
    {
      if (isset($_POST["$i-clear"]) && $_POST["$i-clear"])
          unset($_SESSION['contact-form-upload'][$i]);
      if (isset($_FILES[$i])             &&
                $_FILES[$i][    'type']  &&
                $_FILES[$i][    'name']  &&
                $_FILES[$i]['tmp_name']  &&
    file_exists($_FILES[$i]['tmp_name']) &&
       filesize($_FILES[$i]['tmp_name']) <= $x['maxsize'])
                $_SESSION['contact-form-upload'][$i] =
                    array('type' =>                   $_FILES[$i][    'type'],
                          'name' =>                   $_FILES[$i][    'name'],
                          'data' => file_get_contents($_FILES[$i]['tmp_name']));
    }

    if ($x['type'] === 'checkbox'   && trim($_POST[$i]) ||
        $x['type'] === 'department' && trim($_POST[$i]) ||
        $x['type'] === 'input'      && trim($_POST[$i]) ||
        $x['type'] === 'name'       && trim($_POST[$i]) ||
        $x['type'] === 'select'     && trim($_POST[$i]) ||
        $x['type'] === 'subject'    && trim($_POST[$i]) ||
        $x['type'] === 'textarea'   && trim($_POST[$i]) ||
        $x['type'] === 'email'      && preg_match("/^$patern_aux2$/sDX", $_POST[$i]) ||
        $x['type'] === 'turing'     && isset($_SESSION['contact-form-number']) && $_POST[$i] === $_SESSION['contact-form-number'] ||
        $x['type'] === 'upload'     && isset($_SESSION['contact-form-upload'][$i]))
    {
      if ( $x['type'] === 'textarea')
           $ebody .=             "\r\n" . $_POST[$i] . "\r\n";

      if ( $x['type'] !== 'textarea')
      if (!$x['name'] && isset($x['prompt']))
           $ehead .= $x['prompt'] . ' ' . $_POST[$i] . "\r\n";
      else $ehead .= $x['name'  ] . ' ' . $_POST[$i] . "\r\n";
    }
    elseif ($x['require'] || $_POST[$i] !== '')
    {
      $valid = false;
      if (!$x['name'] && isset($x['prompt']))
           $contact_form_fields[$i]['prompt'] = "<em>{$x['prompt']}</em>";
      else $contact_form_fields[$i]['name'  ] = "<em>{$x['name'  ]}</em>";
    }

    switch ($x['type'])
    {
      case 'department': foreach ($x['items'] as $j => $y) if ($y === $_POST[$i]) $contact_form_email = $j; break;
      case 'email':      $email = $_POST[$i]; break;
      case 'name':       $ename = $_POST[$i]; break;
      case 'subject':    $esubj = $_POST[$i]; break;
    }
  }

  if ($valid)
  {
$mail_sent = contact_form_mail($contact_form_email, $esubj, 
 strtr($ehead . $ebody, "\r\n", '<br>'),
                                  "From: $ename <$email>\r\n", 
 $contact_form_encoding,

 isset($_SESSION['contact-form-upload']) ?
 $_SESSION['contact-form-upload'] : array());


    if ($mail_sent)
         echo '<div class="error"><em>'               . $contact_form_msg_sent     . '</em></div>';
    else echo '<div class="error"><em class="error">' . $contact_form_msg_not_sent . '</em></div>';
    if ($mail_sent) $_POST    = array();
    if ($mail_sent) $_SESSION = array();
  }
  else   echo '<div class="error"><em>'               . $contact_form_msg_invalid  . '</em></div>';
}

$_SESSION['contact-form-number'] = str_pad(rand(0, 9999), 4, '0', STR_PAD_LEFT);

?>


<!-- ***** HTML ************************************************************ -->

<form method="post" action="<?=$_SERVER['REQUEST_URI'];?>" enctype="multipart/form-data">
<table>
<?php

$slash = $contact_form_xhtml ? '/' : '';
foreach ($contact_form_fields as $i => $x)
{
  ?>
  <tr>
  <th><?=$x['name'];?></th>
  <td>
  <?php
  switch ($x['type'])
  {
    case 'name':
    case 'email':
    case 'input':
    case 'subject':
      ?>
      <div class="input"><input name="<?=$i;?>" type="text" value="<?=contact_form_post($i);?>" <?=$slash;?>></div>
      <?php
      break;
    case 'turing':
      ?>
      <div class="input"><input name="<?=$i;?>" type="text" value="<?=contact_form_post($i);?>" <?=$slash;?>></div>
      <img width="60" height="17" src="<?=$x['url'];?>?sname=<?=session_name();?>&amp;rand=<?=rand();?>" alt="" <?=$slash;?>>
      <br style="clear: both;" <?=$slash;?>>
      <small><?=$x['prompt'];?></small>
      <?php
      break;
    case 'upload':
      ?>
      <input name="<?=$i;?>" type="file" value="<?=contact_form_post($i);?>" <?=$slash;?>>
      <?php
      if (isset($_SESSION['contact-form-upload'][$i]))
      {
        ?>
        <input name="<?=$i;?>-clear" type="checkbox" value="Yes" <?=$slash;?>>
        <?=$contact_form_msg_clear;?> <?=$_SESSION['contact-form-upload'][$i]['name'];?>
        <?php
      }
      break;
    case 'checkbox':
      ?>
      <input name="<?=$i;?>" type="checkbox" value="Yes" <?=contact_form_post($i) ? 'checked="checked"' : '';?> <?=$slash;?>>
      <small><?=$x['prompt'];?></small>
      <?php
      break;
    case 'textarea':
      ?>
      <div class="input"><textarea name="<?=$i;?>" cols="45" rows="6"><?=contact_form_post($i);?></textarea></div>
      <?php
      break;
    case 'select':
    case 'department':
      ?>
      <select name="<?=$i;?>">
      <option value=""><?=$x['default'];?></option>
      <?php foreach ($x['items'] as $j => $y) { ?><option value="<?=$y;?>" <?=contact_form_post($i) === $y ? 'selected="selected"' : '';?>><?=$y;?></option><?php } ?>
      </select>
      <?php
      break;
  }
  ?>
  </td>
  </tr>
  <?php
}

?>

<tr><th></th><td><input id="submit_contact" class="submit" type="submit" value="<?=$contact_form_msg_submit;?>" <?=$slash;?>></td></tr>

</table>
</form>


</div>

Open in new window

0
 

Author Comment

by:pcshost
ID: 26176938
--- Here's the contact form itself. I'm a nube at this as well as an fyi. ---

0
Concerto Cloud for Software Providers & ISVs

Can Concerto Cloud Services help you focus on evolving your application offerings, while delivering the best cloud experience to your customers? From DevOps to revenue models and customer support, the answer is yes!

Learn how Concerto can help you.

 

Author Comment

by:pcshost
ID: 26176977
As another sidenote: This is where I think it might be at issue. Is this the way to but a line break in a plain text email?

 strtr($ehead . $ebody, "\r\n", '<br>'),
0
 

Accepted Solution

by:
pcshost earned 0 total points
ID: 26177018
My last post made me think of something. I read up on adding new lines to plain text documents and read how outlook doesn't quite work correctly in formatting mails. If you put a period at the end of a line it'll interpret the line break correctly. In this case I added to the string a "/n"  creating a new paragraph. That was interpreted perfectly by outlook.

strtr($ehead . $ebody, "\r\n", "\n"),

Please delete the question or leave the points unawarded.
0
 
LVL 15

Expert Comment

by:Insoftservice
ID: 26180075
hi,
Press delete button in question history if u got the answer frm some one assign him pts nothing else.
Or you would have got an email
press abandon question
0

Featured Post

Concerto's Cloud Advisory Services

Want to avoid the missteps to gaining all the benefits of the cloud? Learn more about the different assessment options from our Cloud Advisory team.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Part of the Global Positioning System A geocode (https://developers.google.com/maps/documentation/geocoding/) is the major subset of a GPS coordinate (http://en.wikipedia.org/wiki/Global_Positioning_System), the other parts being the altitude and t…
Build an array called $myWeek which will hold the array elements Today, Yesterday and then builds up the rest of the week by the name of the day going back 1 week.   (CODE) (CODE) Then you just need to pass your date to the function. If i…
Learn how to match and substitute tagged data using PHP regular expressions. Demonstrated on Windows 7, but also applies to other operating systems. Demonstrated technique applies to PHP (all versions) and Firefox, but very similar techniques will w…
The viewer will learn how to create and use a small PHP class to apply a watermark to an image. This video shows the viewer the setup for the PHP watermark as well as important coding language. Continue to Part 2 to learn the core code used in creat…
Suggested Courses
Course of the Month18 days, 2 hours left to enroll

830 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question