Enviar por email los datos de un formulario, en un archivo adjunto, con PHP

Valoración del artículo:
Vemos como enviar desde un formulario informacion en formato de un archivo por mail con php.
Publicado: 05/11/04
Atención: Contenido exclusivo de DesarrolloWeb.com. No reproducir. Copyright.
Formulario html:

<table width="173" border="0" cellspacing="0" cellpadding="0">
<tr>
<td><form name="form1" method="post" action="crea.php">
<table width="173" border="0" cellspacing="0" cellpadding="0">
<tr>
<td>Nombre</td>
<td><input name="nombre" type="text" id="nombre"></td>
</tr>
<tr>
<td>Apellido</td>
<td><input name="apellido" type="text" id="apellido"></td>
</tr>
<tr>
<td> </td>
<td><input type="submit" name="Submit" value="Enviar"></td>
</tr>
</table>
</form></td>
</tr>
</table>


crea.php

<?
/* Sistema de envio de mail adjuntos */

/* Desarrollo Viacero www.viacero.com */

$DescriptorFichero = fopen("ficha.txt","w");

$string1 = $nombre.";";
fputs($DescriptorFichero,$string1);

$string2 = $apellido.";";
fputs($DescriptorFichero,$string2);

fclose($DescriptorFichero);


Hasta aqui lo que paso es que recolectamos la info y la guardamos en un archivo txt.

Primero hay que incluir la clase phpmailer para poder instanciar un objeto de la misma

require "includes/class.phpmailer.php";

Instanciamos un objeto de la clase phpmailer al que llamamos, por ejemplo mail.

$mail = new phpmailer();

Definimos las propiedades y llamamos a los métodos correspondientes del objeto mail.

Con PluginDir le indicamos a la clase phpmailer donde se encuentra la clase smtp que como he comentado al principio de este ejemplo va a estar en el subdirectorio includes.

$mail->PluginDir = "includes/";

Con la propiedad Mailer le indicamos que vamos a usar un servidor smtp.

$mail->Mailer = "smtp";

Asignamos a Host el nombre de nuestro servidor smtp.

$mail->Host = "smtp..com.ar";

Le indicamos que el servidor smtp requiere autenticación.

$mail->SMTPAuth = true;

Le decimos cual es nuestro nombre de usuario y password.

$mail->Username = "user";
$mail->Password = "pass";


Indicamos cual es nuestra dirección de correo y el nombre que queremos que vea el usuario que lee nuestro correo.

$mail->From = "nn@nn.com.ar";
$mail->FromName = "nn";


El valor por defecto 10 de Timeout es un poco escaso dado que voy a usar una cuenta gratuita, por tanto lo pongo a 30.

$mail->Timeout=50;

Indicamos cual es la dirección de destino del correo.

$mail->AddAddress("nn@nn.com");

Asignamos asunto y cuerpo del mensaje, el cuerpo del mensaje lo ponemos en formato html, haciendo que se vea en negrita.

$mail->Subject = "sistema de envio";
$mail->Body = "sistema de envio desarrollo viacero.com \n";


Definimos AltBody por si el destinatario del correo no admite email con formato html.

$mail->AltBody = "";
$archivo ="ficha.txt";
$archivo_name = "ficha.txt";
if ($achivo !="none") {
$mail->AddAttachment($archivo,$archivo_name);
}
$exito = $mail->Send();


Si el mensaje no ha podido ser enviado se realizaran 4 intentos mas como mucho para intentar enviar el mensaje, cada intento se hara 5 segundos despues del anterior, para ello se usa la funcion sleep.

$intentos=1;
while ((!$exito) && ($intentos < 5)) {
sleep(5);
//echo $mail->ErrorInfo;
$exito = $mail->Send();
$intentos=$intentos+1;

}

if(!$exito)
{
echo "Problemas enviando correo electrónico a ".$valor;
echo "<br>".$mail->ErrorInfo;
}
else
{
echo "Mensaje enviado correctamente";
}
?>

Comentarios
Fueron enviados 8 comentarios al artículo
8 comentarios no revisados
0 comentarios revisados

Categorias relacionadas
El autor
Últimas noticias
Alojados en el grupo