$ asunto en forma de correo php devolviendo solo la primera palabra en la cadena

Actualmente estoy aprendiendo php para una clase de interfaz web, y una de nuestras tareas es generar un formulario básico para enviar un correo electrónico. Entonces debemos poder enviar una muestra de ese formulario en un correo electrónico a través de html. Quiero hacer esto mostrando la entrada que se ingresó cuando se envió el correo electrónico. Tengo la mayor parte de esto funcionando, simplemente no puedo obtener la variable $ subject para completar completamente dentro de la muestra. Solo mostrará una palabra y omitirá todas las demás después del primer carácter de espacio. (Lo mismo ocurre con la variable $ from, sin embargo, normalmente será una dirección de correo electrónico y, por lo tanto, no es un problema importante)

Por ejemplo, si envío un correo electrónico con el asunto "Esto es una prueba", cuando reciba el correo electrónico en mi bandeja de entrada, veré el tema completo "Esto es una prueba" en el asunto de mi correo electrónico. Pero cuando abro el correo electrónico en sí mismo y miro la muestra del formulario generado, solo veré "Esto" como el asunto completado.

Estoy usando la etiqueta input, type = "text" para ingresar el tema y me imagino que eso es parte del motivo. Puedo resolver el problema usando una etiqueta textarea, pero eso no es realmente convencional y parece anular el propósito del ejercicio. Cualquier ayuda es apreciada. ¡Gracias!

Aquí está mi código: (El primer bloque es solo una función para generar el formulario).

function createForm() //create form upon page load
{
    echo '<form method="post">' . '<br />';
    echo '<fieldset>' . '<br />';
    echo '<legend><p>Heading</p></legend>' . '<br />';
    echo 'To: <input name="to" type="text" />' . '<br />';
    echo 'From: <input name="from" type="text" />' . '<br />';
    echo 'Subject: <input name="subject" type="text"  />' . '<br />';
    echo '</fieldset>' . '<br />';
    echo '<fieldset>' . '<br />';
    echo '<legend><p>Content</p></legend>' . '<br />';
    echo 'Message: <textarea name="message" cols="30" rows="10"></textarea>' . '<br />';
    echo '<input name="send" type="submit" />' . '<br />';
    echo '</fieldset>' . '<br />';
    echo '</form>';
}

Y el código de correo electrónico de envío real:

if(isset($_REQUEST['to'])) //send email 
{
    $to = $_REQUEST['to'];
    $subject = $_REQUEST['subject'];
    $from = $_REQUEST['from'];

    $headers = "MIME-Version: 1.0" . "\r\n";
    $headers .= 'Content-Type: text/html; charset=iso-8859-1' . "\r\n";
    $headers .= "From: $from" . "\r\n";
    $headers .= "Reply-To:  $from"  . "\r\n";
    $headers .= "Subject: $subject" . "\r\n";
    $headers .= "X-Mailer: PHP/".phpversion() . "\r\n";

    //html message
    $message = '
    <html>
    <body>
    <form>
    <fieldset>
    <legend>Headings</legend>
    To: <input type="text" name="to" value=' . $_REQUEST['to'] . ' /><br />
    From: <input type="text" name="from" value=' . $_REQUEST['from'] . ' /><br />
    Subject: <input type="text" name="subject" value=' . $_REQUEST['subject'] . ' />
    </fieldset>
    <fieldset>
    <legend>Content</legend>
    Message: <textarea name="message" cols="30" rows="10">' . $_REQUEST['message'] . '</textarea><br />
    <input type="submit" name="send" />
    </fieldset>
    </form>
    </body>
    </html>';   

    mail($to,$subject,$message,$from,$headers);

    echo "Message sent, thank you. <br />";
    echo '<a href="email.php">Return</a>';
}
else
{
    createForm(); //create form if no $to set. 
}

Respuestas a la pregunta(1)

Su respuesta a la pregunta