Comunidad de diseño web y desarrollo en internet online

envio de formulario a mail

Citar            
MensajeEscrito el 29 Abr 2005 09:51 pm
como estan?
por favor me colaboran con el siguiente problema tengo una web con un formulario y lo envio a un mail con la funcion ($destinatario,$asunto,$cuerpo,$headers); lo hace perfecto el servidor tiene las siguientes caracteristicas
PHP Version 4.3.11 Server API CGI
y ahora coloco el mismo formulario en otra pagina y no saca ningun error, aparentemente lo envia pero nunca llega al mail las caracteristicas de este servidor son
PHP Version 4.2.2 Server API Apache
gracias.

Por jhonny97

9 de clabLevel



Genero:Masculino  

Bogota

msie
Citar            
MensajeEscrito el 06 May 2005 09:10 pm
Para empezar, creo que te extraña que nadie haya respondido, la razón es porque una de las reglas de aca es usar el buscador antes de preguntar,
aqui esta un ligero tutorial que explica como hacerlo sin la función mail

http://www.cristalab.com/tutoriales/97/envio_de_correo_electronico_desde_php_sin_la_funcion_mail

y a continuación un codigo de una función que optimiza la función mail
esta la elabore yo 8) Tiene las opciones Basicas,
Archivos adjuntos, Copia Carbón, Copia Carbón Oculta, Reply-To, Formatos HTML y TXT,
si la estudias no tendras que volver a copiar y pegar.
espero que te sea utíl

Código :

function sendmail($asunto,$mensaje,$destinatario,$destinario,$cc='',$cco='',$reply='',$formato='',$attach='')
{
if(!$formato)$formato='html';
if(!$attach)$attach=Array();
while(list($campo,$valor)=each($attach))
{
if($attach[$campo]['size']!=0)
{
if(!$attach[$campo]['data'])$attach[$campo]['data']=fread(fopen($attach[$campo]['tmp_name'], "r"),$attach[$campo]['size']);


$docsnames.= "X-attachments: ".$attach[$campo]['name']."\n";

$adjuntados .= "n--Message-Boundary\n";
$adjuntados .= "Content-type: ".$attach[$campo]['type']."; name=\"".$attach[$campo]['name']."\"\n";
$adjuntados .= "Content-Transfer-Encoding: BASE64\n";
$adjuntados .= "Content-disposition: attachment; filename=\"".$attach[$campo]['name']."\"\n\n";
$adjuntados .= chunk_split(base64_encode($attach[$campo]['data']))."\n";

}
}

$cabeceras = "From: ".$destinatario."\n";
if($cc)$cabeceras .= "CC: ".$cc."\n";
if($cco)$cabeceras .= "BCC: ".$cco."\n";
if($reply)$cabeceras .= "Reply-To: ".$reply."\n";
$cabeceras.="X-Priority: 1\n";
$cabeceras.="X-MSMail-Priority: High\n";
$cabeceras.="X-Mailer: Neftali Yaguas -\"Sendmail Attach files 1.2\"- [email protected]\n";
$cabeceras.="Return-Path: [email protected]\n";
$cabeceras .= "MIME-version: 1.0\n";
$cabeceras .= "Content-type: multipart/mixed; boundary=\"Message-Boundary\"\n";
$cabeceras .= "Content-transfer-encoding: 7BIT\n".$docsnames;

$cabezerasmsg = "--Message-Boundary\n";
$cabezerasmsg .= "Content-type: text/".$formato."; charset=US-ASCII\n";
$cabezerasmsg .= "Content-transfer-encoding: 7BIT\n";
$cabezerasmsg .= "Content-description:Cuerpo de Mensaje\n\n";

$cuerpo = $cabezerasmsg.$mensaje."\n\n".$adjuntados."--Message-Boundary--\n";

return mail($destinario,$asunto,$cuerpo,$cabeceras);
}

?>



La forma de usarlo es la siguiente:



despues de pegar el codigo anterior al principio de tu documento, (recomiendo insertarlo desde un include)
cuando vallas a enviar email usas el siguiente codigo

Código :

<?
sendmail("Asunto del mensaje",$mensaje,'"Tu Nombre"<[email protected]>','[email protected]')
?>


donde esta la variable $mensaje qe esta en negrita, esa es la variable que trae el mensaje completo, este script formatea en html

puedes editarlo de la siguiente manera:

para la variable adjunto, haces el siguiente proceso:

Código :

$archivo1['name']='imagen.jpg'; //nombre del archivo
$archivo1['tmp_name']='../imagen.jpg'; //ruta del archivo
$archivo1['size']='1500'; // peso del archivo. (por defecto es el peso calculado de tmp_name
$archivo1['type']='Tipo mime del archivo'; // ejemplo: image/jpeg, text/html
$archivo1['data']='contenido del archivo'; // este solo es necesario si el archivo es creado desde codigo, pero si se define este no usara el valor de tmp_name.


Código :

$adjunto['Archivo1']=$archivo1;
$adjunto['Archivo2']=$archivo2;
$adjunto['...']=...; // este es un nombre cualquiera.


Código :

sendmail("Asunto del mensaje",$mensaje,'"Tu Nombre"<[email protected]>','[email protected]',$cc,$cco,$replyto,$formato,$adjunto)



en caso de que los archivos adjuntos deban venir de un formulario solo hay que hacer esto:

Código :

$adjunto=$_FILES;

Bueno espero que esto te sirva o el otro, o envia los mails desde Gmail, jajaja
o usa Sockets, pero por favor nunca dejes de usar el buscador antes de preguntar.
^^ :cc: ^^ :cc: ^^ :cc: ^^ :cc:

Por jhony192

791 de clabLevel

1 tutorial

Genero:Masculino  



Ultima edición por jhony192 el 31 May 2005 05:12 pm, editado 2 veces

Just Another Programmer

firefox
Citar            
MensajeEscrito el 07 May 2005 12:06 am
Bueno primero que nada, tengo que pedir una disculpa a toda la comunidad linuxera, por postear desde la insignia del mal, pero es que voy de volada :P

Segundo: amigo, tu servidor es Linux o WindowS????? si es Windows, tienes que instalar la emulación SMTP del IIS o en su defecto buscar un buen software servidor de correo.

Si es Linux y te falla, probablemente tengas un problema con sendmail, si este es tu caso, revisa bien la configuración del sendmail, puedes recibir correos desde otros servidores??? en otras palabras, es posible que sendmail este configurado sólo de manera local.

PD. En breve escribiré un tuto sobre instalación y configuración de sendmail :P

Por Aoyama

BOFH

6224 de clabLevel

6 tutoriales
12 articulos

Genero:Masculino   Anime Bloggers Bastard Operators From Hell

Webdesigner & Developer, en mis ratos libres bebo café por litros.

msie
Citar            
MensajeEscrito el 16 May 2005 08:22 pm
todo estaba bien lo que pasa es que se demora en llegar casi 24 horas.
Hasta Pronto

Por jhonny97

9 de clabLevel



Genero:Masculino  

Bogota

msie
Citar            
MensajeEscrito el 16 May 2005 08:46 pm
Bueno eso ya es cosa de infraestructura :P

Por Aoyama

BOFH

6224 de clabLevel

6 tutoriales
12 articulos

Genero:Masculino   Anime Bloggers Bastard Operators From Hell

Webdesigner & Developer, en mis ratos libres bebo café por litros.

firefox
Citar            
MensajeEscrito el 28 Nov 2005 05:20 pm
jhony192, he probado tu codigo para enviar un archivo adjunto con un email, el email llega bien pero el adjunto no aparece.

Voy a mirar bien, a ver si reviso todo de nuevo... :S

Por Josepzin

208 de clabLevel



 

España

firefox
Citar            
MensajeEscrito el 02 Dic 2005 09:59 pm
pues a mi tambien..me llega el correo, pero no llega el adjunto...y me marca errores en estas lineas (el error es variable infefinida)
$cabeceras .= "Content-transfer-encoding: 7BIT\n".$docsnames;
$cuerpo = $cabezerasmsg.$mensaje."\n\n".$adjuntados."--Message-Boundary--\n";

Por rolv

Claber

2000 de clabLevel

3 tutoriales

 

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.