Modoficar script de formulario de contacto

Abetop"
Primero, deseo agradecerte que me dediques un poco de tu valioso tiempo.
Espero que me puedas ayudar o aunque sea dar una idea de como solucionar este problemita:
diseñe mi web http://tucoachh.com.ar/index2.html
Y el inconveniente surge cuando desde el formulario de contaco me envian el mail. En mi casilla me aparece el aviso de "nuevo mail"pero cuando lo abro siempre esta en blanco.
Averigue en varios foros y me digeron que tendria que modificar algo en el archivo php.
Lo intente pero todo lo que cambie fue para peor.
Este formulario de contacto lo consegui en un foro y el php consta de dos partes + una planilla excel
(Este es pincipal)
<?PHP
$archivo = fopen("formulario.csv" , "w");
if ($archivo) {
//variables que hayamos declarado en la pelicula de flash
$datos="Nombre del autor: $nom
+ Su email:,$email
+ Su empresa:,$empresa
+ Motivo del contacto:,$contacto
+ Mensaje:,$mensaje";
fputs ($archivo, $datos);
}
echo $pulsado;
fclose ($archivo);
?>
<?php
include "libmail.php";
$m= new Mail;
//correo desde el que se enviará
$m->From( "[email protected]" );
//correo al que se enviará. Se puede poner en ambos lugares el mismo correo
$m->To( "[email protected]" );
//El subject del email, será el email que haya escrito el usuario, salvo que lo cambiemos, pon lo que quieras
$m->Subject( "$email" );
//variables que hayamos declarado en la pelicula de flash
$m->Body( "Nombre del autor:
$nom
Su email:
$email
Su empresa:
$empresa
Motivo del contacto:
$contacto
Mensaje:
$mensaje" );
//Si queremos que el correo se envíe a más cuentas de correo, quitar las barras de comentario y especificar los correos
//$m->Cc( "alguien@algun_server.au");
//$m->Bcc( "alguien_mas@otro_server.es");
$m->Priority(1) ;
$m->Attach( "formulario.csv", "application/vnd.ms-excel", "attachment" );
$m->Send();
?>
          -------------------------------------------------
Y este es la otro(libreria)
]<?php
/*
this class encapsulates the PHP mail() function.
implements CC, Bcc, Priority headers
@version 1.3
- added ReplyTo( $address ) method
- added Receipt() method - to add a mail receipt
- Added optionnal charset parameter to Body() method. This should fix charset problem on some mail clients
LASTMOD Fri Oct 6 15:46:12 UTC 2000
@author Leo West - [email protected]
*/
class Mail
{
/*
list of To addresses
@var array
*/
var $sendto = array();
/*
@var array
*/
var $acc = array();
/*
@var array
*/
var $abcc = array();
/*
paths of attached files
@var array
*/
var $aattach = array();
/*
list of message headers
@var array
*/
var $xheaders = array();
/*
message priorities referential
@var array
*/
var $priorities = array( '1 (Highest)', '2 (High)', '3 (Normal)', '4 (Low)', '5 (Lowest)' );
/*
character set of message
@var string
*/
var $charset = "UTF-8";
var $ctencoding = "7bit";
var $receipt = 0;
/*
Mail contructor
*/
function Mail()
{
$this->autoCheck( true );
$this->boundary= "--" . Md5( uniqid("myboundary") );
}
/*
activate or desactivate the email addresses validator
ex: autoCheck( true ) turn the validator on
by default autoCheck feature is on
@param boolean $bool set to true to turn on the auto validation
@access public
*/
function autoCheck( $bool )
{
if( $bool )
$this->checkAddress = true;
else
$this->checkAddress = false;
}
/*
Define the subject line of the email
@param string $subject any monoline string
*/
function Subject( $subject )
{
$this->xheaders['Subject'] = strtr( $subject, "\r\n" , " " );
}
/*
set the sender of the mail
@param string $from should be an email address
*/
function From( $from )
{
if( ! Is_string($from) ) {
exit;
}
$this->xheaders['From'] = $from;
}
/*
set the Reply-to header
@param string $email should be an email address
*/
function ReplyTo( $address )
{
if( ! Is_string($address) )
return false;
$this->xheaders["Reply-To"] = $address;
}
/*
Add a receipt to the mail ie. A confirmation is returned to the "From" address (or "ReplyTo" if defined)
when the receiver opens the message.
@warning this functionality is *not* a standard, thus only some mail clients are compliants.
*/
function Receipt()
{
$this->receipt = 1;
}
/*
set the mail recipient
@param string $to email address, accept both a single address or an array of addresses
*/
function To( $to )
{
// TODO : test validité sur to
if( is_array( $to ) )
$this->sendto= $to;
else
$this->sendto[] = $to;
if( $this->checkAddress == true )
$this->CheckAdresses( $this->sendto );
}
/* Cc()
* set the CC headers ( carbon copy )
* $cc : email address(es), accept both array and string
*/
function Cc( $cc )
{
if( is_array($cc) )
$this->acc= $cc;
else
$this->acc[]= $cc;
if( $this->checkAddress == true )
$this->CheckAdresses( $this->acc );
}
/* Bcc()
* set the Bcc headers ( blank carbon copy ).
* $bcc : email address(es), accept both array and string
*/
function Bcc( $bcc )
{
if( is_array($bcc) ) {
$this->abcc = $bcc;
} else {
$this->abcc[]= $bcc;
}
if( $this->checkAddress == true )
$this->CheckAdresses( $this->abcc );
}
/* Body( text [, charset] )
* set the body (message) of the mail
* define the charset if the message contains extended characters (accents)
* default to us-ascii
* $mail->Body( "mél en français avec des accents", "iso-8859-1" );
*/
function Body( $body, $charset="" )
{
$this->body = $body;
if( $charset != "" ) {
$this->charset = strtolower($charset);
if( $this->charset != "us-ascii" )
$this->ctencoding = "8bit";
}
}
/* Organization( $org )
* set the Organization header
*/
function Organization( $org )
{
if( trim( $org != "" ) )
$this->xheaders['Organization'] = $org;
}
/* Priority( $priority )
* set the mail priority
* $priority : integer taken between 1 (highest) and 5 ( lowest )
* ex: $mail->Priority(1) ; => Highest
*/
function Priority( $priority )
{
if( ! Intval( $priority ) )
return false;
if( ! Isset( $this->priorities[$priority-1]) )
return false;
$this->xheaders["X-Priority"] = $this->priorities[$priority-1];
return true;
}
/*
Attach a file to the mail
@param string $filename : path of the file to attach
@param string $filetype : MIME-type of the file. Default to...

5 Respuestas

Respuesta
1
Descargue tu script del enlace que me diste y me funciono perfectamente, y veo que con el que tu colocas en la pregunta no hay cambio, mi pregunta es:
¿Cómo te aparece tu correo, que tanto te sale?, ¿Sale el texto plano del mail?
¿Cuál es la logica del archivo .CSV si lo estas enviando plano tambien?
¿si abres tu archivo .CSV hay datos?
Como te digo yo hice una prueba y lo unico que le cambie fueron los correo, y me funciono perfectamente, enviame la info para ver como podemos resolver tu duda.
Gracias por responder a mi pregunta .
Aqui te pongo una imagen para que veas como llega el mail a mi casilla con todos los campos en blanco   .
Así llegan todos los mail.
Con respecto a la logiaca del archivo .CSV: Te cuento que este fla lo descargue de un post, osea que ni "idea".
Si te parece que hay una forma mas sencilla de script o si quieres realizar midificaciones en este no me opongo. varias personas me han dicho que es un poco rebuscado (por el excel y la libreria) para lo que yo necesito. El tema es que como no se que hacer con estos temas "php" estoy en el limbo.
 saludos y gracias por el tiempo que me dedicas.
Con respecto al tema
1: Yo estoy utilizando las librerias que me citaste de fla-php y me funciona bien, en ese orden de ideas se podria pensar en un problema de servidor o inclusive de cliente mail, ensaya otro cliente mail para descartar el servidor.
2: La logica del archivo .csv, no me parece, es redundante si se tiene en cuenta que la informacion se puede enviar en el cuerpo del mail, es mas carga en el servidor, carga en el envio y una carga para quien revisa el mail, yo no lo utilizaria.
3: Yo solo le hice cambios a la libreria php2excel_csv.php, de la siguiente manera:
====================================================================
<?php
include "libmail.php";
$m= new Mail;
//correo desde el que se enviará
$m->From( [email protected] );
//correo al que se enviará. Se puede poner en ambos lugares el mismo correo
$m->To( "[email protected]" );
//El subject del email, será el email que haya escrito el usuario, salvo que lo cambiemos, pon lo que quieras
$m->Subject( "Contacto Electrónico de: $email" );
//variables que hayamos declarado en la pelicula de flash
$m->Body( "Nombre del autor: $nom
Su email: $email
Su empresa: $empresa
Motivo del contacto: $contacto
Mensaje: $mensaje" );
//Si queremos que el correo se envíe a más cuentas de correo, quitar las barras de comentario y especificar los correos
//$m->Cc( "alguien@algun_server.au");
//$m->Bcc( "alguien_mas@otro_server.es");
$m->Priority(1) ;
$m->Send();
?>
==========================================================
Si notas ya no aparece la parte de creacion del archivo, ni el proceso de adjuntarlo, ensaya asi modificando tus datos de correos, y me cuentas.
Slds
Gracias una vez más estimado jopehi.
Te cuento que con la modificación que me recomendaste las cosas han mejorado en un 50% (ni más ni menos ) .
Ahora en m bandeja de entrada logro ver en asunto : correo electrónico de: "pero no se ve quien lo envia" .
una imagen vale más que mil palbras:   .
Y cuando abro el mail aprecen solo los datos fijos y no los "variables " qu eson los que ingresa el interesado en contactarme

espero no ser pesado u que pienses que abuso de tu buena voluntad
una vez más gracias
saludos mauroartur
<div>
bueno esto puede ser debido al manejo de la variable register_globals de php, creo que la solucion seria la siguiente, donde recibas la variable del formularios recibela como post asi
actual: $mail ==> la recibes ahora, $_POST[mail], asi quedaria el script.</div>
<div>
=================================================
<?php
include "libmail.php";
$m= new Mail;
//correo desde el que se enviará
$m->From( "[email protected]" );
//correo al que se enviará. Se puede poner en ambos lugares el mismo correo
$m->To( "[email protected]" );
//El subject del email, será el email que haya escrito el usuario, salvo que lo cambiemos, pon lo que quieras
$m->Subject( "Contacto Electronico de: $_POST[email]" );
//variables que hayamos declarado en la pelicula de flash
$m->Body( "Nombre del autor: $_POST[nom]
Su email: $_POST[email]
Su empresa: $_POST[empresa]
Motivo del contacto: $_POST[contacto]
Mensaje: $_POST[mensaje]" );
//Si queremos que el correo se envíe a más cuentas de correo, quitar las barras de comentario y especificar los correos
//$m->Cc( "alguien@algun_server.au");
//$m->Bcc( "alguien_mas@otro_server.es");
$m->Priority(1) ;
$m->Send();
?>
=================================================
en teoria diria que ya no habria problema.</div>
ahora si¡¡¡¡¡
estimado "jopehi" an dubo de maravillas el script final .
no tengo más que palabras de agradecimiento para tu invalorable contribución, ya que gracias a ti foncionará mi formulario de contacto
saludos
mauroartur
Respuesta
1
Entiendo que este es el formulario que procesa lo del flash:
<!--P <br-->$archivo = fopen("formulario.csv" , "w");
if ($archivo) {
//variables que hayamos declarado en la pelicula de flash (formulario)
$datos="Nombre del autor: $nom
+ Su email:,$email
+ Su empresa:,$empresa
+ Motivo del contacto:,$contacto
+ Mensaje:,$mensaje";
fputs ($archivo, $datos);
}
echo $pulsado;
fclose ($archivo);
?>
Ideas:
1.- Verifica el nombre del archivo PHP dentro del editor del flash al cual estamos enviando los datos, ejemplo http://sitio.com/procesa.php usando urls completas.
2.- Quizas falta recuperar las variables del formulario flash, de ser el caso haga lo siguiente:
$nom=$_POST['nombre'];
$mensaje=$_POS['variable del formulario flash']
Etc. Etc.
Justo antes de intentar llenar $datos. Asumo que su flash envia con post
Dele un vistazo a:
http://www.devshed.com/c/a/Flash/Building-Web-Forms-In-Flash/
si envia con get entonces $nom=$_GET['nombre de var del form flash']
Que concuerde el metodo POST o GET, la url y la recuparacion de la variable.
Me cuentas como te fue.
Gracias por responder a mi pregunta .
Realice la modificacion que me recomendaste y el mal directamente "no me llego a ala casillla"
<?PHP
$archivo = fopen("formulario.csv" , "w");
if ($archivo) {
//variables que hayamos declarado en la pelicula de flash
$datos="Nombre del autor: $nom=$_POST['nombre'];
+ Su email:,$email=$_POST['email'];
+ Su empresa:,$empresa=$_POST['empresa'];
+ Motivo del contacto:,$contacto=$_POST['contacto'];
+ Mensaje:,$mensaje":=$_POST['mensaje'];
fputs ($archivo, $datos);
}
echo $pulsado;
fclose ($archivo);
?>
<?php
Aqui te pongo una imagen para que veas como llega el mail a mi casilla con todos los campos en blanco   .
Así llegan todos los mail.
Si te parece que hay una forma mas sencilla de script o si quieres realizar midificaciones en este no me opongo. varias personas me han dicho que es un poco rebuscado (por el excel y la libreria) para lo que yo necesito. El tema es que como no se que hacer con estos temas "php" estoy en el limbo.
 saludos y gracias por el tiempo que me dedicas.
El procedimiento que indicaba era el siguiente;lo que hiciste de introducir $_POST dentro de la variable mensaje creo que da errores como esto:
$esto="esta mal hacer esto $_POST['algo']";  //error
en su lugar separemos las variables.
echo $nom=$_POST['nombre']; //agreguemos echo para ver si variable tiene contenido
$email=$_POST['email'];
$empresa=$_POST['empresa'];
$contacto=$_POST['contacto'];
$mensaje=$_POST['mensaje'];
$datos="Nombre del autor: $nom
+ Su email:,$email + Su empresa:,$empresa + Motivo del contacto:,$contacto + Mensaje:,$mensaje";
Por otro lado me pregunto si verificaste con tu editor flash si las variables que intentamos recuperar mediante get o post, en el script php anterior son exactamente las que envia el action script del flash.
Casi no se flash, propongo que el siguiente codigo lo grabes como php, llenes este formulario simple y lo hagas procesar por tu script principal. Entonces veremos que nuestro correo no esta vacio.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Documento sin título</title>
</head>
<body>
<table width="100%" border="1">
<tr>
<td> </td>
</tr>
<tr>
<td><form name="form1" method="post" action="http://tucoachh.com.ar/principal.php">
<p>
Nombre:
<input name="nombre" type="text" id="nombre">
</p>
<p>Email:
<input name="email" type="text" id="email">
</p>
<p>Empresa:
<input name="empresa" type="text" id="empresa">
</p>
<p>Mensaje:
<input name="mensaje" type="text" id="mensaje">
</p>
<p>  </p>
<p>
<input type="submit" name="Submit" value="Enviar">
</p>
</form></td>
</tr>
<tr>
<td> </td>
</tr>
</table>
</body>
</html>
tenias rezón
ese era la solución
una vez más muchas gracias por el tiempo dedicado
saludos cordiales de
mauroartur
Respuesta
1
¿Es imprescindible enviar el correo con formato de excel? Lo digo porque si lo haces en html es más sencillo, te ahorras una librería, más portable (el mail se puede leer en cualquier cliente de correo independiente del sys op), código + legible...
Gracias por responder a mi pregunta .
Aqui te pongo una imagen para que veas como llega el mail a mi casilla con todos los campos en blanco   .
Así llegan todos los mail.
Con respecto a lo del formato excel: Te cuento que este fla lo descargue de un post, osea que ni "idea".
Si te parece que hay una forma mas sencilla de script o si quieres realizar midificaciones en este no me opongo. varias personas me han dicho que es un poco rebuscado (por el excel y la libreria) para lo que yo necesito. El tema es que como no se que hacer con estos temas "php" estoy en el limbo.
 saludos y gracias por el tiempo que me dedicas.
Para que te envíen un simple email te sirve algo como esto:
    $message = "
<html>
<font face=verdana>Hello ".$contacto."!, <br>This email is just to salute you!<br><br>$remitente</font>
</html>
";
    $message = wordwrap($message, 70);
    $subject = 'Just an email';
    $header = "From: ".$email."\r\n";
    $header .= "MIME-Version: 1.0\r\n";
    $header .= "Content-type: text/html;";
     mail("[email protected]", $subject, $message, $header);
Luego lo puedes complicar todo lo que quieras con plantillas, formatos, multiples destinatarios, copia oculta... pero para eso busca documentación, haz una lista con lo que necesitas, no lo que quieres, sólo lo que necesitas y cuando funcione podrás pensar en añadir aún más florituras.
Lo que propones sobre excel está muy bien pero si lo envías a un ordenador con Linux por ejemplo puede que el mensaje sea ilegible, el html es casi universal (y menos feo que el texto plano).
Respuesta
1
Te sugiero que pruebes depurando el archivo paso a paso, mostrando variables con la funcion echo, y sobre todo, al principio de cada script dentro de los tags php, escribir las dos lineas, que te mostraran todos los errores de codigo:
error_reporting(E_ALL);
ini_set('display_errors' , 1);
buena idea , no lo había pensado, lo voy hacer y te comento el resultado
saludos.
ok.
Respuesta
1
He mirado el codigo y ciertamente, lo unico que has hecho es plantarme el codigo de envio de e-mail. En principio debe estar bien, aunque te recomiendo la siguiente libreria para enviar e-mails desde php:
http://phpmailer.codeworxtech.com/index.php?pg=examples
A mi no me ha fallado NUNCA.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas