El enviar correo electrónico desde PHP es un proceso muy sencillo, aunque primero deberás realizar los cambios en el archivo de configuración de PHP php.ini explicados en este enlace (también es posible usar la función de PHP ini_set() para no tener que modificar el archivo).
Mientras estés haciendo pruebas sería recomendable configurar PHP para que muestre los mensajes de aviso y error. Para aprender cómo hacerlo consulta este enlace.

Vea también: [ Configurar PHP para enviar EMail ] - [ Configurar XAMPP envía EMail (Windows) ]

Vea también: [ Configurar mensajes de error en PHP ]
Los correos electrónicos pueden ser enviados como texto plano o en formato HTML (pudiendo con ello insertar imágenes, dar formato al texto, etc.). A continuación te mostramos un sencillo ejemplo de cómo enviar un EMail con PHP en texto plano.
01_mail_texto_plano.html:
<html>
<head>
<title>Enviar E-Mail desde PHP | informaticapc.com</title>
</head>
<body>
<form name="frmMail" id="frmMail" action="01_mail_texto_plano.php" method="post">
Nombre: <input type="text" name="txtNombre" id="txtNombre" />
EMail: <input type="text" name="txtMail" id="txtMail" />
<p>Mensaje:</p>
<textarea name="txtMensaje" id="txtMensaje" rows="10" cols="60"></textarea><p/>
<input type="submit" name="btnSubmit" value="Enviar" />
</form>
</body>
</html>
01_mail_texto_plano.php:
<?php
/*
En caso de que no puedas enviar los correos electrónicos y no puedas o quieras
editar el archivo de configuración 'php.ini', descomenta las siguientes líneas con
las que modificamos la configuración en tiempo de ejecución. Si es necesario, modifica
el valor adecuado.
*/
//ini_set('SMTP', "localhost");
//ini_set('smtp_port', 25);
//ini_set('sendmail_from', "postmaster@localhost.com");
//ini_set('display_errors', "On"); // Mostrar los errores (usar sólo durante las pruebas)
// Comprobar si llegaron los datos requeridos:
if( !empty($_POST) &&
(isset($_POST['txtNombre']) && !empty($_POST['txtNombre'])) &&
(isset($_POST['txtMail']) && !empty($_POST['txtMail'])) &&
(isset($_POST['txtMensaje']) && !empty($_POST['txtMensaje']))
)
{
$mensaje = "Mensaje de: ".$_POST['txtNombre'].PHP_EOL;
$mensaje .= "EMail: ".$_POST['txtMail'].PHP_EOL.PHP_EOL;
$mensaje .= $_POST['txtMensaje'];
// Indicar cabecera con el nombre del remitente. Si no indicamos la dirección de correo puede que
// no se realice el envío a a otros servicios como Hotmail o Yahoo
$cabecera = "From: TU_NOMBRE <TU_CUENTA_DE_EMAIL@TU_SERVIDOR.com>";
// IMPORTANTE: debes sustituir la dirección de correo por aquella en que deseas recibir el EMail:
$ok = mail( trim($_POST['txtMail']), "Mensaje de prueba", $mensaje, $cabecera );
if( $ok == true )
echo "<p>El E-Mail ha sido enviado</p>";
else
echo "<p>ERROR al enviar el E-Mail</p>";
echo "<p>Haz <a href='01_mail_texto_plano.html'>clic para volver al formulario</a></p>";
}
else
{
$html = "<html>";
$html .= "<head>";
// Después de cuatro segundos de mostrarse esta página web de error se redirigiría a la URL especificada.
$html .= "<meta http-equiv='refresh' content='4;url=01_mail_texto_plano.html'>";
$html .= "</head>";
$html .= "<body>";
$html .= "No han llegado todos los datos. En unos segundos será redirigido a la página principal.";
$html .= "</body>";
$html .= "</html>";
echo $html;
}
?>
Observa que hemos usado la función ini_set() para no tener que modificar el archivo de configuración.
Con PHP_EOL insertamos saltos de línea (en el formato adecuado según el sistema operativo usado).
Fíjate también que como primer parámetro de la función mail() debes introducir la dirección de correo electrónico del destinatario.
Al cargarse la página web 01_mail_texto_plano.html veremos el siguiente formulario, en el que escribiremos el texto del mensaje:
Al hacer clic en el botón Enviar se procesará el archivo 01_mail_texto_plano.php, en el que se comprobará si han llegado los datos del formulario y si se introdujo el texto del mensaje para de ser así enviar el E-mail, mostrándose en todo caso el mensaje correspondiente.
Si todo ha ido bien deberías ver el mensaje informando de ello, y en unos pocos minutos (como mucho) llegaría el correo electrónico a la cuenta de correo indicada.

Vea también: [ Enviar E-Mail ] - [ mail() ]

IMPORTANTE: en caso de que la dirección de correo electrónico especificada en la cabecera no exista o sea la misma que la del destinatario, algunos servicios de correo electrónico como GMail enviarán el mensaje a la carpeta de correo no deseado o SPAM.
A continuación te mostramos un ejemplo de como enviar correos electrónicos en formato HTML o en formato HTML.
02_mail_html.html:
<html>
<head>
<title>Enviar E-Mail desde PHP | informaticapc.com</title>
</head>
<body>
<form name="frmMail" id="frmMail" action="01_mail_texto_plano.php" method="post">
Nombre: <input type="text" name="txtNombre" id="txtNombre" />
EMail: <input type="text" name="txtMail" id="txtMail" />
<p>Mensaje:</p>
<textarea name="txtMensaje" id="txtMensaje" rows="10" cols="60"></textarea><p/>
<input type="submit" name="btnSubmit" value="Enviar" />
</form>
</body>
</html>
02_mail_html.php:
<?php
/*
En caso de que no puedas enviar los correos electrónicos y no puedas o quieras
editar el archivo de configuración 'php.ini', descomenta las siguientes líneas con
las que modificamos la configuración en tiempo de ejecución. Si es necesario, modifica
el valor adecuado.
*/
//ini_set('SMTP', "localhost");
//ini_set('smtp_port', 25);
//ini_set('sendmail_from', "postmaster@localhost.com");
//ini_set('display_errors', "On"); // Mostrar los errores (usar sólo durante las pruebas)
// Comprobar si llegaron los datos requeridos:
if( !empty($_POST) &&
(isset($_POST['txtNombre']) && !empty($_POST['txtNombre'])) &&
(isset($_POST['txtMail']) && !empty($_POST['txtMail'])) &&
(isset($_POST['txtMensaje']) && !empty($_POST['txtMensaje']))
)
{
$mensaje = "Mensaje de: ".$_POST['txtNombre']."<br />";
$mensaje .= "EMail: ".$_POST['txtMail']."<p />";
$mensaje .= nl2br($_POST['txtMensaje']);
// Indicar cabecera con el nombre del remitente. Si no indicamos la dirección de correo puede que
// no se realice el envío a a otros servicios como Hotmail o Yahoo
$headers ="Content-type: text/html; charset=iso-8859-1;"; // Especifica correo en formato HTML
$headers .= "From: TU_NOMBRE <TU_CUENTA_DE_EMAIL@TU_SERVIDOR.com>";
// IMPORTANTE: debes sustituir la dirección de correo por aquella en que deseas recibir el EMail:
$ok = mail( trim($_POST['txtMail']), "Mensaje de prueba", $mensaje, $headers );
if( $ok == true )
echo "<p>El E-Mail ha sido enviado</p>";
else
echo "<p>ERROR al enviar el E-Mail</p>";
echo "<p>Haz <a href='02_mail_html.html'>clic para volver al formulario</a></p>";
}
else
{
$html = "<html>";
$html .= "<head>";
// Después de cuatro segundos de mostrarse esta página web de error se redirigiría a la URL especificada.
$html .= "<meta http-equiv='refresh' content='4;url=02_mail_html.html'>";
$html .= "</head>";
$html .= "<body>";
$html .= "No han llegado todos los datos. En unos segundos será redirigido a la página principal.";
$html .= "</body>";
$html .= "</html>";
echo $html;
}
?>
Observa que hemos añadido el Content-type adecuado para enviar el correo electrónico en formato HTML, y que usamos la etiqueta <br /> para insertar saltos de línea.
Fíjate también que hacemos uso de la función de PHP nl2br(): esto es así porque en los <textarea> se guardan los saltos de línea con los caracteres utilizados por el sistema operativo, y puesto que vamos a enviar el Email en formato HTML, con dicha función los convertimos a la etiqueta HTML <br> (si no lo hiciéramos, todo el cuerpo del mensaje se mostraría en una sola línea).

Vea también: [ Enviar E-Mail ] - [ mail() ]

IMPORTANTE: en caso de que la dirección de correo electrónico especificada en la cabecera no exista o sea la misma que la del destinatario, algunos servicios de correo electrónico como GMail enviarán el mensaje a la carpeta de correo no deseado o SPAM.
A continuación te mostramos cómo enviar archivos adjuntos utilizando la función mail().
03_mail_adjuntos_1.html:
<html>
<head>
<title>Enviar E-Mail desde PHP | informaticapc.com</title>
</head>
<body>
<form name="frmMail" id="frmMail" action="03_mail_adjuntos1.php" method="post" enctype="multipart/form-data">
Nombre del remitente: <input type="text" name="txtNombre" id="txtNombre" /><br />
EMail destinatario: <input type="text" name="txtMail" id="txtMail" /><br />
Mensaje:<br />
<textarea name="txtMensaje" id="txtMensaje" /></textarea><br />
Archivo adjunto: <input type="file" name="txtFile" id="txtFile" /><p />
<input type="submit" name="btnSubmit" value="Enviar" />
</form>
</body>
</html>
03_mail_adjuntos_1.php:
<?php
/*
En caso de que no puedas enviar los correos electrónicos y no puedas o quieras
editar el archivo de configuración 'php.ini', descomenta las siguientes líneas con
las que modificamos la configuración en tiempo de ejecución. Si es necesario, modifica
el valor adecuado.
*/
//ini_set('SMTP', "localhost");
//ini_set('smtp_port', 25);
//ini_set('sendmail_from', "postmaster@localhost.com");
//ini_set('display_errors', "On"); // Mostrar los errores (usar sólo durante las pruebas)
// Comprobar si llegaron los datos requeridos:
if( !empty($_POST) &&
(isset($_POST['txtNombre']) && !empty($_POST['txtNombre'])) &&
(isset($_POST['txtMail']) && !empty($_POST['txtMail']))
)
{
// Indicar cabecera con el nombre del remitente. Si no indicamos la dirección de correo puede que
// no se realice el envío a a otros servicios como Hotmail o Yahoo
$cabecera = "From: TU_NOMBRE <TU_CUENTA_DE_EMAIL@TU_SERVIDOR.com>\r\n";
$datos = "";
$mensaje = "";
// Si se seleccionó un archivo, se adjunta:
if( empty($_FILES['txtFile']['name']) == false )
{
// Creamos una cadena aleatoria como separador:
$separador = md5(uniqid(time()));
// Comprobamos si el archivo fue subido, y leemos su contenido
if(is_uploaded_file($_FILES['txtFile']['tmp_name']))
{
// Leemos el archivo obteniéndolo como una cadena de texto:
$archivo = fopen($_FILES['txtFile']['tmp_name'], "rb");
$datos = fread( $archivo, filesize($_FILES['txtFile']['tmp_name']) );
fclose($archivo);
// Dividimos la cadena de texto en varias partes más pequeñas:
$datos = chunk_split( base64_encode($datos) );
}
// Creamos la cabecera del mensaje:
$cabecera .= "MIME-Version: 1.0\r\n".
"Content-Type: multipart/mixed; boundary=\"".$separador."\"\r\n\r\n";
// Construimos el cuerpo del mensaje (para el texto):
$mensaje = "--".$separador."\r\n";
$mensaje .= "Content-Type:text/plain; charset='iso-8859-1'\r\n";
$mensaje .= "Content-Transfer-Encoding: 7bit\r\n\r\n";
$mensaje .= $_POST['txtMensaje']."\r\n\r\n";
// Continuamos construyendo el cuerpo del mensaje, añadiendo el archivo:
$mensaje .= "--".$separador."\r\n";
$mensaje .= "Content-Type: ".$_FILES['txtFile']['type']."; name='".$_FILES['txtFile']['name']."'\r\n";
$mensaje .= "Content-Transfer-Encoding: base64\r\n";
$mensaje .= "Content-Disposition: attachment; filename='".$_FILES['txtFile']['name']."'\r\n\r\n";
$mensaje .= $datos."\r\n\r\n";
/*
Si se fuera a insertar otro archivo, tras haber leído el contenido del mismo y haberlo cargado en otra
variable, repetiríamos aquí las cinco líneas anteriores (cambiando el nombre del componente del formulario
en $_FILES)
*/
// Separador de final del mensaje
$mensaje .= "--".$separador."--";
}
else
{
// No se adjuntó ningún archivo, enviamos sólo el texto del mensaje:
$mensaje = "Mensaje de: ".$_POST['txtNombre'].PHP_EOL;
$mensaje .= "EMail: ".$_POST['txtMail'].PHP_EOL.PHP_EOL;
$mensaje .= $_POST['txtMensaje'];
}
// IMPORTANTE: debes sustituir la dirección de correo por aquella en que deseas recibir el EMail:
$ok = mail( trim($_POST['txtMail']), "Mensaje de prueba", $mensaje, $cabecera );
if( $ok == true )
echo "<p>El E-Mail ha sido enviado</p>";
else
echo "<p>ERROR al enviar el E-Mail</p>";
echo "<p>Haz <a href='03_mail_adjuntos_1.html'>clic para volver al formulario</a></p>";
}
else
{
$html = "<html>";
$html .= "<head>";
// Después de cuatro segundos de mostrarse esta página web de error se redirigiría a la URL especificada.
$html .= "<meta http-equiv='refresh' content='4;url=03_mail_adjuntos_1.html'>";
$html .= "</head>";
$html .= "<body>";
$html .= "No han llegado todos los datos. En unos segundos será redirigido a la página principal.";
$html .= "</body>";
$html .= "</html>";
echo $html;
}
?>
Para realizar el proceso hemos seguido los siguientes pasos:
- Comprobamos si han llegado los campos del formulario requeridos y después verificamos si se envió un archivo adjunto: en tal caso creamos una cadena de texto aleatoria que será utilizada como separador entre el cuerpo del mensaje y los archivos adjuntos (dicha cadena de texto no será mostrada en el mensaje).
- Luego, por razones de seguridad comprobamos si estamos trabajando realmente sobre un archivo subido al servidor y lo leemos obteniendo una cadena de texto, que posteriormente dividiremos en otras más pequeñas.
- A continuación creamos la cabecera del EMail, teniendo en cuenta que lo siguiente a boundary debe ir entre comillas dobles.
- Después construimos el cuerpo del mensaje (la parte que corresponde al texto del E-Mail) insertando un separador sl principio (fíjate en que se deben poner dos guiones medios seguidos).
- Seguidamente y entre otros separadores, especificamos el comienzo y fin del archivo adjunto.
- Una vez realizados todos los pasos, enviamos el correo electrónico (si no se seleccionó un archivo simplemente se enviaría el texto del E-Mail).
IMPORTANTE: hay que tener en cuenta que si no se selecciona ningún archivo, el array $_POST[] contendrá un elemento con un valor en la clave error de '4': dicho código informa de que no se subió ningún archivo. Para ver otros códigos de error comprueba el enlace facilitado a continuación.
A continuación te mostramos otro ejemplo en el que podrás ver cómo enviar varios archivos adjuntos.
03_mail_adjuntos_2.html:
<html>
<head>
<title>Enviar E-Mail desde PHP | informaticapc.com</title>
</head>
<body>
<form name="frmMail" id="frmMail" action="03_mail_adjuntos_2.php" method="post" enctype="multipart/form-data">
Nombre del remitente: <input type="text" name="txtNombre" id="txtNombre" /><br />
EMail destinatario: <input type="text" name="txtMail" id="txtMail" /><br />
Mensaje:<br />
<textarea name="txtMensaje" id="txtMensaje" /></textarea><br />
Archivo adjunto 1: <input type="file" name="txtFile" id="txtFile" /><br />
Archivo adjunto 2: <input type="file" name="txtFile2" id="txtFile2" /><p />
<input type="submit" name="btnSubmit" value="Enviar" />
</form>
</body>
</html>
03_mail_adjuntos_2.php:
<?php
/*
En caso de que no puedas enviar los correos electrónicos y no puedas o quieras
editar el archivo de configuración 'php.ini', descomenta las siguientes líneas con
las que modificamos la configuración en tiempo de ejecución. Si es necesario, modifica
el valor adecuado.
*/
//ini_set('SMTP', "localhost");
//ini_set('smtp_port', 25);
//ini_set('sendmail_from', "postmaster@localhost.com");
//ini_set('display_errors', "On"); // Mostrar los errores (usar sólo durante las pruebas)
// Comprobar si llegaron los datos requeridos:
if( !empty($_POST) &&
(isset($_POST['txtNombre']) && !empty($_POST['txtNombre'])) &&
(isset($_POST['txtMail']) && !empty($_POST['txtMail']))
)
{
// Indicar cabecera con el nombre del remitente. Si no indicamos la dirección de correo puede que
// no se realice el envío a a otros servicios como Hotmail o Yahoo
$cabecera = "From: TU_NOMBRE <TU_CUENTA_DE_EMAIL@TU_SERVIDOR.com>\r\n";
$datos = "";
$mensaje = "";
$contenido_archivos = "";
$hay_archivos = false;
// Creamos una cadena aleatoria como separador entre cuerpo y archivos adjuntos:
$separador = md5(uniqid(time()));
// Recorremos el array para leer cada archivo recibido:
foreach( $_FILES as $adjunto )
{
// Comprobamos si el archivo fue subido, y leemos su contenido:
if( is_uploaded_file($adjunto['tmp_name']) )
{
$hay_archivos = true;
// Leemos el archivo obteniéndolo como una cadena de texto:
$archivo = fopen($adjunto['tmp_name'], "rb");
$datos = fread( $archivo, filesize($adjunto['tmp_name']) );
fclose($archivo);
// Dividimos la cadena de texto en varias partes más pequeñas:
$datos = chunk_split( base64_encode($datos) );
// Continuamos construyendo el cuerpo del mensaje, añadiendo el archivo:
$contenido_archivos .= "--".$separador."\r\n";
$contenido_archivos .= "Content-Type: ".$adjunto['type']."; name='".$adjunto['name']."'\r\n";
$contenido_archivos .= "Content-Transfer-Encoding: base64\r\n";
$contenido_archivos .= "Content-Disposition: attachment; filename='".$adjunto['name']."'\r\n\r\n";
$contenido_archivos .= $datos."\r\n\r\n";
}
}
// Si se subieron archivos creamos las cabeceras necesarias:
if( $hay_archivos == true )
{
// Creamos la cabecera del mensaje:
$cabecera .= "MIME-Version: 1.0\r\n".
"Content-Type: multipart/mixed; boundary=\"".$separador."\"\r\n\r\n";
// Construimos el cuerpo del mensaje para el texto, añadiendo al final los archivos adjuntos:
$mensaje = "--".$separador."\r\n";
$mensaje .= "Content-Type:text/plain; charset='iso-8859-1'\r\n";
$mensaje .= "Content-Transfer-Encoding: 7bit\r\n\r\n";
$mensaje .= $_POST['txtMensaje']."\r\n\r\n".$contenido_archivos;
// Separador de final del mensaje:
$mensaje .= "--".$separador."--";
}
else
{
// No se adjuntó ningún archivo, enviamos sólo el texto del mensaje:
$mensaje = "Mensaje de: ".$_POST['txtNombre'].PHP_EOL;
$mensaje .= "EMail: ".$_POST['txtMail'].PHP_EOL.PHP_EOL;
$mensaje .= $_POST['txtMensaje'];
}
// IMPORTANTE: debes sustituir la dirección de correo por aquella en que deseas recibir el EMail:
$ok = mail( trim($_POST['txtMail']), "Mensaje de prueba", $mensaje, $cabecera );
if( $ok == true )
echo "<p>El E-Mail ha sido enviado</p>";
else
echo "<p>ERROR al enviar el E-Mail</p>";
echo "<p>Haz <a href='03_mail_adjuntos_2.html'>clic para volver al formulario</a></p>";
}
else
{
$html = "<html>";
$html .= "<head>";
// Después de cuatro segundos de mostrarse esta página web de error se redirigiría a la URL especificada.
$html .= "<meta http-equiv='refresh' content='4;url=03_mail_adjuntos_2.html'>";
$html .= "</head>";
$html .= "<body>";
$html .= "No han llegado todos los datos. En unos segundos será redirigido a la página principal.";
$html .= "</body>";
$html .= "</html>";
echo $html;
}
?>

Vea también: [ Carga con el método POST ] - [ Explicación de los mensajes de error ] - [ $_FILES ]

Vea también: [ md5() ] - [ uniqid() ] - [ time() ] - [ is_uploaded_file() ] - [ fopen() ] - [ fread() ] - [ fclose() ]

Vea también: [ chunk_split() ] - [ base64_encode() ]

Fuentes: [ PHP e-mail attachment script ] - [ Form Handling with PHP ]

Ten en cuenta que en el ejemplo anterior habría que validar la dirección EMail introducida por el usuario.

Como veremos en el siguiente apartado, el proceso de enviar archivos por E-Mail se puede realizar bastante más fácilmente con tan sólo unas pocas líneas, utilizando la Clase en PHP gratuita PHPMailer.
La clase PHPMailer es una poderosa herramienta gratuita que nos facilitará la tarea de enviar correos electrónicos. Puedes descargarla gratis desde los enlaces facilitados al final de este apartado.
En el siguiente ejemplo, mediante PHPMailer accedemos al servidor de correo de GMail para enviar nuestros correos electrónicos a través de dicho servicio (necesitaremos tener una cuenta en él).
04_mail_phpmailer.html:
<html>
<head>
<title>Enviar E-Mail desde PHP | informaticapc.com</title>
</head>
<body>
<form name="frmMail" id="frmMail" action="04_mail_phpmailer.php" method="post">
<textarea name="txtMail" id="txtMail" rows="10" cols="60"></textarea><p/>
<input type="submit" name="btnSubmit" value="Enviar" />
</form>
</body>
</html>
04_mail_phpmailer.php:
<?php
/*
IMPORTANTE: descarga PHPMailer para tu versión de PHP desde el enlace facilitado
al final de este apartado, y copia los archivos incluídos con 'require()' en la misma
carpeta del ejemplo.
*/
require("class.phpmailer.php");
require("class.smtp.php");
// Comprobar si se llegaron los datos
if( !empty($_POST) &&
(isset($_POST['txtNombre']) && !empty($_POST['txtNombre'])) &&
(isset($_POST['txtMail']) && !empty($_POST['txtMail'])) &&
(isset($_POST['txtMensaje']) && !empty($_POST['txtMensaje']))
)
{
try
{
$mail = new PHPMailer(); // Crear una instancia de la Clase
// Configuraciones para GMail
$mail->Host = "smtp.gmail.com"; // DATOS SERVIDOR CORREO
$mail->SMTPAuth = true; // Indicamos que el servidor requiere autenticación
$mail->SMTPSecure = "tls";
$mail->Port = "587";
// Datos de acceso a tu cuenta en GMail (usuario y contraseña):
$mail->Username = "TU_EMAIL@TU_SERVIDOR.com";
$mail->Password = "TU_PASSWORD";
// FROM (la dirección de correo y el nombre que queremos que vea el usuario que lee nuestro correo):
$mail->From = "test@prueba.com";
$mail->FromName = "TU NOMBRE";
// Datos del Mensaje:
$mail->AddAddress($_POST['txtMail'], "DESTINATARIO"); // Email del DESTINATARIO
$mail->Subject = "Asunto del mensaje"; // ASUNTO
$mail->IsHTML(false); // Indica si el CUERPO estará en formato HTML
// Cuerpo del mensaje:
$mail->AltBody = $_POST['txtMensaje']; // ... si el proveedor de correo de destino no soporta HTML
$mail->Body = nl2br($_POST['txtMensaje']); // ... en HTML (obligatorio)
// Si se adjuntó un archivo se añade al EMail:
if( empty($_FILES['txtFile']['name']) == false )
$mail->AddAttachment($_FILES['txtFile']['tmp_name'], $_FILES['txtFile']['name']);
// Enviar el EMail
if(!$mail->Send())
echo "<p>No se puedo enviar el EMail</p>";
else
echo "<p>EMail enviado correctamente</p>";
}
catch(Exception $e )
{
echo "<p>Ha ocurrido un error al enviar el EMail</p>";
}
}
else
{
echo "<p>No llegaron datos</p>";
}
echo "<p>Haz <a href='04_mail_phpmailer.html'>clic para volver al formulario</a></p>";
?>
Fíjate en que debes rellenar algunos datos: escribir tu cuenta de correo y su contraseña en GMail, así como el nombre que deseas que aparezca como destinatario y la dirección de correo del destinatario.
Al igual que en el apartado anterior, si no te funciona el ejemplo por no tener de un servidor de correo instalado en tu ordenador prueba a ejecutar la página web desde un alojamiento web, ya que probablemente tendrán un servidor de correo preparado.

Vea también: [ Configurar PHP para enviar EMail ] - [ Configurar XAMPP enviar EMail (Windows) ] - [ Configurar mensajes de error en PHP ]

Vea también: [ PHPMailer ]