13.- Cómo mandar emails con php

Cómo configurar el servidor para poder mandar emails

La información sobre como configurar el servidor la hemos recogido del artículo de Kevin Yank en Sitepoint.com Advanced email in PHP.

Si tienes la web alojada en un hosting, puedes olvidarte de este paso, puesto que ya lo tendrás configurado, si no es así, tendrás que ponerte en contacto con el Administrador y pedir que te lo configuren.

Para poder mandar emails desde la web utilizando php, tienes que configurar el archivo php.ini

En la sección [mail function] del archivo php.ini encontrarás tres configuraciones: SMTP, sendmail_from, y sendmail_path.

Si tienes el servidor instalado sobre una máquina con windows, tienes que configurar la opción SMTP para que apunte a tu servidor SMTP. (o al servidor smtp de tu proveedor si lo estás instalando en casa).

Si estás utilizando un sistema linux (o cualquier sistema operativo basado en linux, tienes que apuntar el sendmail_path apuntando al programa sendmail de tu servidor, pasandole la opción –t, puedes utilizar la opción SMTP de linux si no tienes el sendmail.
Indpendientemente de cómo hayas configurado la opción anterior tendrás que configurar la opción sendmail_from con tu dirección de correo o la dirección de correo que quieras que aparezca por defecto en los emails enviados utilizando scripts en PHP.

Un servidor windows o un servidor linux sin sendmail tendrían más o menos esta apariencia:

[mail function]
; Setup for Windows systems
SMTP = smtp.my.isp.net
sendmail_from = me@myserver.com

En un servidor linux con sendmail sería:

[mail function]
; Setup for Linux systems
sendmail_path = /usr/sbin/sendmail -t
sendmail_from = me@myserver.com

Una vez hechos los cambios, reinicia el servidor y listo!

Mandar emails sencillitos

Para mandar emails con scripts de php se utiliza la función mail()
La estructura para enviar emails es:

mail("to address", "subject", "message", "additional headers")

to address: La dirección de correo a quien le vamos a enviar un correo electrónico.
subject: el título o asunto del mensaje
Message: Aquí va el mensaje que queremos enviar
Additional headers: encabezamiento de los emails, que veremos en otro capítulo ya que normalmente no lo vamos a utilizar.

Ahora que ya tenemos el servidor configurado adecuadamente y que sabemos cómo es la función mail() podemos probar algunos ejemplos, de momento no muy útiles, pero que seguro que nos suben la moral.

1er ejemplo

Con este código

<html>
<?php //sustituye tuemail@tudominio.com con tu dirección//
mail("tuemail@tudominio.com", "Probando email en php", "Esto es una prueba a ver si funciona el mail en php") ;
?>
</html>

Simplemente al cargar la página nos llegaría un emilio, nos llegarán tantos emilios como veces recarguemos la página.

Pero nosotros, cómo siempre, además de hacer nuestra probatina, nos curamos en salud, y obligamos al script a decirnos si las cosas han ido bien o han ido mal ahí vamos:

<?php
if (@mail("tuemail@tudominio.com", "Probando email en php", "Esto es una prueba a ver si funciona el mail en php")) {
echo('<p>Email enviado.</p>');
} else {
echo('<p>Vaya por dios, la cosa no rula.</p>');
}
?>

Así sabremos si la cuestión nos ha funcionado sin siquiera tener que recoger el correo.

De todas maneras, al cabo de un rato, si todo ha ido bien, deberías recibir un email con el título “probando email en php”.

También podemos utilizar variables dentro de la función mail() lo que nos vendrá muy bien luego si queremos utilizar formularios.

<html>
<?php //sustituye tuemail@tudominio.com con tu dirección//

$a_quien = "ladireccion@decorreo.com" ;
$titulo = "El título del mensaje" ;
$mensaje = "Todo el mensaje de este correo está metido dentro de una simple variable" ;

if (@mail($a_quien, $titulo, $mensaje))
{
echo('<p>Email enviado.</p>');
} else {
echo('<p>Vaya por dios, la cosa no rula.</p>');
}
?>

</html>

Mandar emails utilizando formularios

Una de las cosas que siempre llaman la atención de las páginas profesionales es que utilizan formularios para mandar emails recomendando la página a amigos, para contactar con el webmaster etc. Pues vamos allá.

Primero nos vamos a hacer nuestro formulario de contacto:

<html>
<title>Escribir al webmaster</title>
<form name="form" method="post" action="mail.php">
<p>Título: <input type="text" name="subject"></p>
<p>Mensaje: <textarea name="message"></textarea></p>
<input type="submit" name="Submit" value="Submit">
</form>
</html>

Con este formulario recogemos el título y el mensaje y los metemos en sendas variables $subject y $message y se lo pasamos al script mail.php

Nuestro archivo mail.php sería:

<html>
<?php //sustituye tuemail@tudominio.com con tu dirección//
$a_quien = "ladireccion@decorreo.com" ;

if (@mail($a_quien, $subject, $message)){
echo('<p>Email enviado.</p>');
} else {
echo('<p>Vaya por dios, la cosa no rula.</p>');
}
?>
</html>

Mandar emails a más de una persona
Para mandar emails a más de una persona, simplemente añadimos sus direcciones separadas por comas.

<?php
mail('destinatario1@coreo.com, destinatario2@coreo.com ',
'Un Emilio para dos, 'Y aquí va el mensajito.');
?>

Reconozco que no hemos profundizado mucho, pero para empezar a probar tenemos Smile

Volver an índice

One response to “13.- Cómo mandar emails con php

  1. y si me dice que “Vaya por dios, la cosa no rula.” ???

Leave a Reply

Please log in using one of these methods to post your comment:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s