Comunidad de diseño web y desarrollo en internet online

COMO ENVIAR HTML POR EMAIL

Citar            
MensajeEscrito el 14 Ene 2012 06:45 pm
Hola amigos, tengo una duda, tengo un envio de correo en ASP que me permite enviar en lugar de escribir el codigo HTML poner la ruta del archivo:
myMail.CreateMHTMLBody "archivo.html"

Pero eso es con ASP ahora, como podria hacerlo con PHP sin escribir el codigo HTML?
Yo usaba este en PHP:

Código PHP :

<? 
$destinatario = "[email protected]"; 
$asunto = "Correo"; 
$cuerpo = ' 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>email</title>
</head>

<body>
<img src="imagen.jpg" width="540" height="338" />
</body>
</html>

'; 

//para el envío en formato HTML 
$headers = "MIME-Version: 1.0\r\n"; 
$headers .= "Content-type: text/html; charset=iso-8859-1\r\n"; 

//dirección del remitente 
$headers .= "From:[email protected]\r\n"; 

//dirección de respuesta, si queremos que sea distinta que la del remitente 
$headers .= "Reply-To: [email protected]\r\n"; 

//ruta del mensaje desde origen a destino 
$headers .= "Return-path: [email protected]\r\n"; 

mail($destinatario,$asunto,$cuerpo,$headers) 
?> 


Pero como veran, hay q poner el HTML y yo quiero poner la ruta del archivo :D.

Que tenga buen dia.

Por julito12

20 de clabLevel



 

msie
Citar            
MensajeEscrito el 15 Ene 2012 01:16 am
Hola, yo tengo un problema similar. Me han hablado de PHPMailer, pero es tan complejo (para mi) y tan dificil... Seguro que tu nivel es mas avanzado que el mio. Cuando resuelvas tu duda, pasate por aqui (http://foros.cristalab.com/enviar-respuesta-automatica-en-html-css-y-recibir-datos-en-css-t103304/) y asi me ayuda a mi y matamos dos pajaros de un tiro! Saludos

Por ekisdedede

13 de clabLevel



 

firefox
Citar            
MensajeEscrito el 15 Ene 2012 03:38 pm
Bueno, lo solucione, es asi:

<?php
$sfrom="[email protected]"; //cuenta que envia
$sdestinatario="[email protected]"; //cuenta destino
$ssubject="Asunto del email"; //subject

$shtml=file_get_contents ('http://tuweb.com/carpeta/archivo.php');
$sheader="From:".$sfrom."\nReply-To:".$sfrom."\n";
$sheader=$sheader."X-Mailer:PHP/".phpversion()."\n";
$sheader=$sheader."Mime-Version: 1.0\n";
$sheader=$sheader."Content-Type: text/html";
mail($sdestinatario,$ssubject,$shtml,$sheader);
?>

Por julito12

20 de clabLevel



 

chrome
Citar            
MensajeEscrito el 15 Ene 2012 06:19 pm
Hola Julito12, he usado tu mismo script pero no funciona...

if($status=="OK"){// echo $query;
$headers .= "Reply-to:$email\n";
$headers .= "From: $email\n";
$headers .= "Errors-to: $headers4\n";
$headers .= 'MIME-Version: 1.0 \r\n';
$headers = "Content-Type: text/html; charset=iso-8859-1\n".$headers;
mail($headers4,$subject,$headers,"Formulario contaco web
<br>Nombre: $name
<br>Email: $email
<br>Telefono: $phone
<br>Titulo del mensaje: $headers4
<br>Mensaje: $message","$headers");
$msg=" Missatge enviat. Gràcies.";


//Mail automatico//
$archivohtml=file_get_contents ('http://mouhamouda.com/ca/error_catalan2012.html');
$mensaje= "Gracias $name, por comunicarse con el Webmaster de recibirá una pronta respuesta";
$para="$email";
$subject= "RE: $title";
$sheader=$sheader."X-Mailer:PHP/".phpversion()."\n";
$sheader=$sheader."Mime-Version: 1.0\n";
$sheader=$sheader."Content-Type: text/html";
$mainheaders= "From: [email protected]";

mail ($para,$subject,$mensaje,$mainheaders,$archivohtml,$sheader);
}

Por ekisdedede

13 de clabLevel



 

firefox
Citar            
MensajeEscrito el 15 Ene 2012 08:05 pm
Cual es el error que tienes?

Por julito12

20 de clabLevel



 

chrome
Citar            
MensajeEscrito el 15 Ene 2012 09:07 pm
Ni me llega el mensaje, ni el recibe el mensaje.. pero al rellenar todos los campos, y todo ok.. confirma que el mensaje ha sido enviado. Sin embargo no lo recibo.. hay algo mal en el codigo?

Por ekisdedede

13 de clabLevel



 

firefox
Citar            
MensajeEscrito el 15 Ene 2012 10:07 pm
Supongamos que tu formulario sea este:

Código HTML :

<form id="form1" name="form1" method="post" action="email.php">
  <p>
    <label for="nombre"></label>
    <input type="text" name="nombre" id="nombre" />
  </p>
  <p>
    <input type="text" name="email" id="email" />
  </p>
  <p>
    <input type="text" name="phone" id="phone" />
    <br />
    <label for="mensaje"></label>
    <textarea name="mensaje" id="mensaje" cols="45" rows="5"></textarea>
    <br />
    <input type="submit" name="enviar" id="enviar" value="Enviar" />
    <br />
  </p>
</form>


Tu PHP seria este:

Código PHP :

<?
$para = $_POST[email];
$telefono= $_POST[phone];
$asunto = "Bienvenido $_POST[nombre] a nuestra web"; 
$mensaje = "Bienvenido $_POST[nombre] a nuestro sitio web.
$_POST[mensaje]

ATTE. Administrador 
"; 
$de = "[email protected]"; 
mail($para, $asunto, $mensaje, "From: ".$de); 
?>


Vos necesitas enviar una respuesta automática de lo que el usuario escribió o solamente una respuesta automática con el archivo HTML que vimos antes? Porque si es así, solamente tendrías que cambiar la variable $mensaje por $mensaje=file_get_contents ('http://tuweb.com/carpeta/archivo.html');.
Después puede hacer otro fragmento de PHP para que te envíe el email a tu casilla con lo que el escribió. Sera eso?

Por julito12

20 de clabLevel



 

chrome
Citar            
MensajeEscrito el 16 Ene 2012 12:04 am
Si, el cliente recibe una respuesta aoutmatica (un archivo html), y yo recibo los datos que el clientte ha escrito en el formulario (en un mail pero con formato al texto).

Es el código que te he generado anteriormente, tengo lo mismo y no me funciona, mira:


/////Recibo datos del cliente que ha rellenado
if($status=="OK"){// echo $query;
$headers .= "Reply-to:$email\n";
$headers .= "From: $email\n";
$headers .= "Errors-to: $headers4\n";
$headers .= 'MIME-Version: 1.0 \r\n';
$headers = "Content-Type: text/html; charset=iso-8859-1\n".$headers;
mail($headers4,$subject,$headers,
<br>"Formulario contaco web ///estos datos
<br>Nombre: $name ////tambien los quisiera
<br>Email: $email /////recibir mediante
<br>Telefono: $phone ///hojas de estilo
<br>Titulo del mensaje: $headers4 ///ya que los recibo en texto plano
<br>Mensaje: $message","$headers");
$msg=" Enviado.";


//Mail automatico que recibe con el html
$archivohtml=file_get_contents ('http:/web.com/archivos/archivo.html');
$mensaje= "Gracias $name, por comunicarse con el Webmaster de recibirá una pronta respuesta";
$para="$email";
$subject= "RE: $title";
$sheader=$sheader."X-Mailer:PHP/".phpversion()."\n";
$sheader=$sheader."Mime-Version: 1.0\n";
$sheader=$sheader."Content-Type: text/html";
$mainheaders= "From: [email protected]";

mail ($para,$subject,$mensaje,$mainheaders,$archivohtml,$sheader);
}
}
?>

Muchas Gracias!

Por ekisdedede

13 de clabLevel



 

firefox
Citar            
MensajeEscrito el 16 Ene 2012 12:28 am
OK mira... este es el form:

Código HTML :

<form id="form1" name="form1" method="post" action="email.php">
  <p>
    <label for="nombre"></label>
    <input type="text" name="nombre" id="nombre" />
  </p>
  <p>
    <input type="text" name="email" id="email" />
  </p>
  <p>
    <input type="text" name="phone" id="phone" />
    <br />
    <label for="mensaje"></label>
    <textarea name="mensaje" id="mensaje" cols="45" rows="5"></textarea>
    <br />
    <input type="submit" name="enviar" id="enviar" value="Enviar" />
    <br />
  </p>
</form>


Este es el email.php

Código PHP :

<?
$para = $_POST[email]; 
$sfrom="[email protected]"; //cuenta que envia 
$sdestinatario=$_POST[email]; //cuenta destino 
$asunto=$_POST[email];  //subject 

$shtml=file_get_contents ('http://tuweb.com/carpeta/archivo.php');
 
$sheader=$sheader."X-Mailer:PHP/".phpversion()."\n"; 
$sheader=$sheader."Mime-Version: 1.0\n"; 
$sheader=$sheader."Content-Type: text/html"; 
mail($sdestinatario,$asunto,$shtml,$sheader); 
//////////////////////////
$para = "[email protected]";
$asunto = "Bienvenido $_POST[nombre] a nuestro portal"; 
$mensaje = "$_POST[mensaje]";
$de = $_POST[email]; 
mail($para, $asunto, $mensaje, "From: ".$de); 
?>


Eso envía un archivo html o php al usuario, y también recibís en tu correo lo que el escribió. Pone el archivo .html que va a ir dentro del email en la misma carpeta donde esta el formulario con el PHP que envía el correo.Espero que te sirva, lo probé y funciona, después lo podes editar como quieras.

Por julito12

20 de clabLevel



 

chrome
Citar            
MensajeEscrito el 17 Ene 2012 12:33 am
Hola Julito12, Gracias por ayudarme!

Pues veras, casi consegui todo, pero en un foro me comentaron que de la manera que queria hacer la respuesta automatica, conseguiria que la ip de mi servidor me la marcasen como spam, ya que se envia desde el dominio, y no desde el correo. Me han hablado de la conexion mediante SMTP (que es el script que del que te he hablado anteriormente) asique,igual te puede interesar. Yo estoy averiguando como funciona, ya que no he terminado de familiarizarme con el... Pero vamos, igual te puede interesar a ti tambien!

Saludos!

Por ekisdedede

13 de clabLevel



 

firefox
Citar            
MensajeEscrito el 19 Ene 2012 09:58 am
Hola ekisdedede!!

Yo siempre uso phpmailer para enviar los correos y la verdad es que va muy bien. Además, es muy fácil de configurar y te permite seleccionar el tipo de envío del correo sea en SMTP, y el formato puede ser también HTML.

Yo te lo recomiendo.

Un saludo

Por Applinet

4 de clabLevel



Genero:Femenino  

chrome
Citar            
MensajeEscrito el 20 Ene 2012 05:59 pm
PHPMailer es excelentemente bueno
Te muestro parte de un trabajo que hice, el source original lo tengo por ahi regado pero te enseñare los codigos de prueba que tenia, solo sanealos

mi script te permitia registrar a los usuarios a un DB y enviar un correo a X persona para indicarle registro nuevo
(util si tu script es para algun tipo de evento y tu admin necesite estar pendiente de los registros)

Código HTML :

<form method='post' enctype='multipart/form-data'  id='formulario'  action='registrar.php'> 
formulario  
</form>



registrar.php

Código PHP :

<?php
   include("connection.php");
/* -------- Envio de email ---- */
require_once 'class.phpmailer.php'; // en caso de tener el script en otro lugar cambiar path ./mail/class.phpmailer.php etc


$mail = new PHPMailer ();
$mail -> From = "[email protected]";
$mail -> AddAddress ("[email protected]");
$mail -> FromName = "Registro ";
$mail -> Subject = "Nuevo registro";

$mail -> IsHTML (false); // pones (true) en caso de usar formato HTML
$mail->IsSMTP();
$mail->Host = 'smtp.dominio.com.mx';
$mail->Port = 25;
$mail->SMTPAuth = true;
$mail->Username = '[email protected]';
$mail->Password = 'Password-del-correo';

$mail->Body= " 
Email: ".$_POST["input_nombre"]."";


$mail->WordWrap = 50;

if(!$mail->Send())
{
   echo 'Mensaje no se pudo enviar.';
   echo 'Mailer error: ' . $mail->ErrorInfo;
}
else
{
   echo 'Mensaje enviado!.';

/* --------- termina el envio ------------- */
// ahora lo mandamos a la DB

@$var1= $_POST["input_nombre"];

mysql_query("insert into tabla (input_nombre) "."values ('".$email."') ;");

if(mysql_errno()!=0)
   {
      echo "Error - Intenta de nuevo". mysql_errno() . " - ". mysql_error();
      echo "<BR><a href='javascript:history.go(-1)'>Regresar</a>";
   }
   else
   {
      echo "Registro completo, bla bla bla XD ";

   }   
?>



Solo modifica la linea de CLASS.phpmailer.php en la linea 180 y 186


Código PHP :

 var $Username     = "[email protected]";

    /**
     *  Sets SMTP password.
     *  @var string
     */
    var $Password     = "password-del-correo";



OJO: no puedes incluir hojas de estilo en este tipo de correo si acaso dale formato a las tablas o div's que utilizes

Por dsalcedo

50 de clabLevel



Genero:Masculino  

chrome
Citar            
MensajeEscrito el 20 Ene 2012 09:42 pm
Hola Applinet y dsalcedo, gracias por vuestras respuestas!

Estos dias hice unas pruebas, y no logro familizarizarme!

Logre la conexion via SMTP, pero los mails llegan al usuario a la carpeta spam!!!

Y no solo quiero que le llegen al usuario los mails, tambien debo yo recibir su mensaje, y el un aviso de que el mensaje ha sido recibido, me esplico?

Esto se podria hacer?

En un foro me dijeron que el mail que me llega a mi lo hiciese con la funcion mail() (de php la basica de simpre) y que el mail que reciba el usuario usar phpmailer.. pero no logro combinarlos, el servidor solo lee uno de los dos... como podria combinar las dos cosas con el mismo script?

He usado mail() pero no me sirve porque se usa el dominio, y no me interesa porque terminan los mensajes en la carpeta spam! Y tambien he usado PHPmailer (conexion smtp) y me los envia al spam.

No se si me he esplicado del todo bien, cualquier cosa me dicen!

Gracias, saludos.

Por ekisdedede

13 de clabLevel



 

firefox
Citar            
MensajeEscrito el 23 Ene 2012 08:18 am
Hola!,

Yo lo uso y no tengo problema alguno con la carpeta spam. En principio, para que te consideren el mensaje como spam los servidores atienden a una serie de reglas... como por ejemplo el peso del mensaje, la cuenta desde la que se envían los mensajes, si ésta cuenta puede recibir o no respuestas, etc.

En principio, yo creo que te deberías crear una cuenta que pueda enviar y recibir correos y enviarlo desde esa misma cuenta. En el ejempo que te remito, la cuenta de la que te hablo sería "[email protected]"

Yo lo uso así:

$mail = new PHPMailer();
$mail->IsSMTP(); // Enviar vía SMTP
$mail->Host = "mail.servidor.com"; // Servidor SMTP
$mail->Port = 587; // Puerto SMTP
$mail->SMTPAuth = true; // Activar la identificacín SMTP
$mail->Username = "[email protected]"; // Usuario SMTP
$mail->Password = "pass"; // Clave SMTP
$mail->From = "[email protected]"; // Remitente
$mail->FromName = "[email protected]"; // Nombre de remitente
$mail->AddReplyTo("[email protected]"); // E-mail para respuestas
$mail->AddAddress([email protected]); // Destinatario, puedes poner mas de un destinatario separandolo con una coma
$mail->WordWrap = 50; // Ancho del mensaje
$mail->IsHTML(true); // Enviar como HTML
$mail->Subject = "Asunto"; // Asunto
$mail->Body ="Cuerpo"; // Cuerpo


Para enviarte una copia cuando se ha enviado el mensaje, puedes usar la misma función que envia el email:

if ($mail->Send()) //Método que envía el e-mail y retorna si lo ha enviado o no.
{ ->Aquí deberias volver a enviarte una copia del mensaje enviado }
else
{ echo "Hubo un error al enviar";}

Espero que te sirva mi ayuda!!.

Un saludo

Por Applinet

4 de clabLevel



Genero:Femenino  

chrome
Citar            
MensajeEscrito el 23 Ene 2012 05:15 pm
hola de nuevo Applinet,

he seguido tus directrizes, y el resultado es; cuando relleno todos los campos, me dice que el mensaje ha sido enviado, no recibo ningun mensaje de error (ni en el codigo ni en el formulario) pero ni el usuario ni yo, recibimos ningun mensaje, que tengo mal?

Este es el codigo completo que uso:

<?php
$submit=$_POST['Submit'];
if($submit == Submit){
$status = "OK";
$email=$_POST['email'];
$message=$_POST['message'];
$subject=$_POST['subject'];
$name=$_POST['name'];
$phone=$_POST['phone'];
$title=$_POST['title'];
$otros2=$_POST['otros2'];

$msg="";
$msgerror="";


require_once 'phpmailer/class.phpmailer.php';

$mail = new PHPMailer ();
$mail -> From = "www.dominio.com";
$mail->Host = 'mail.dominio.com';
$mail->Port = 2626;
$mail->SMTPAuth = true;
$mail->Username = '[email protected]';
$mail->Password = 'password';

$mail->IsSMTP();

$mail->SMTPDebug = 2;
$mail->Host = 'mail.dominio.com';
$mail->AddReplyTo('[email protected]', 'no-reply');
$mail->AddAddress = $email;
$mail->SetFrom = $headers4;
$mail->IsHTML(true); // El correo se envía como HTML
$mail->MsgHTML(file_get_contents('confirmacion.html'));
$mail->WordWrap = 50; // Ancho del mensaje
$mail->Send();
{"<html>
<head>
<p><font face=Tahoma, Helvetica, sans-serif size=2 color=#333333>
<strong>Formulari de Contacte Web:</strong></font><br>
<br><hr width=450px align=left><br>
<font face=Tahoma, Helvetica, sans-serif size=2>
<strong>Nombre:</strong> $name.<br>
<strong>Tel&eacute;fono:</strong> $phone.<br>
<strong>T&iacute;tulo:</strong> $title : $otros2.<br>
<strong>Correo Electr&oacute;nico:</strong> $email.<br>
<strong>Mensaje:</strong> $message.</font></p>
<title>Formulario de contacto web - www.midominio.com</title>
</head>
</html>";}
if($status=="OK"){
$msg=" Enviado. <BR />";}
//error_reporting(E_ERROR | E_PARSE | E_CORE_ERROR);


if ( strlen($name) < 1 ){
$msgerror .="* Nombre.<BR />";
$status= "NOTOK";}


if (!stristr($email,"@") OR !stristr($email,".")) {
$msgerror .="* Correo incorrecto.<BR />";
$status= "NOTOK";
}

if($title=="Audiovisuales"){
$headers4="[email protected]"; // Change this address within quotes to your address //
}else if ($title=="Informatica"){
$headers4="[email protected]"; // Change this address within quotes to your address //
}else if($title=="Disseño Grafico"){
$headers4="[email protected]"; // Change this address within quotes to your address //
}else if($title=="Fotografia"){
$headers4="[email protected]"; // Change this address within quotes to your address //
}else if($title=="Otros"){
$headers4="[email protected]"; // Change this address within quotes to your address //
}else if($title=="Produccion"){
$headers4="[email protected]"; // Change this address within quotes to your address //
}else if($title=="error"){
$status="NOTOK";
$msgerror .="* Seeleccione un titulo.<BR />";
}

if ( strlen($message) < 10 ){
$msgerror .="* ERROR, MENSAJE MINIMO 10 CARACTERES.<BR/>";
$status= "NOTOK";}
}
?>

En las opciones del titulo, reedirige a cada cuenta de correo diferente, por lo que no debe ser la misma.

Cualquier cosa me comentan, gracias!

Por ekisdedede

13 de clabLevel



 

firefox
Citar            
MensajeEscrito el 25 Ene 2012 10:46 pm
revisa tu formulario de envio si tiene un campo select este bien declarado

$title=="Disseño Grafico" // si no esta asociado al campo no llama variable y la deja en blanco

Por dsalcedo

50 de clabLevel



Genero:Masculino  

chrome
Citar            
MensajeEscrito el 26 Ene 2012 08:33 am
Hola de nuevo!!,

He estado revisando tu código y hay un par de cosas que creo que pueden generar tu error. El primero es el puerto desde donde se envían los emails. Por norma general los puertos usados son el 587 o el 85, pero esto lo tienes que ver según el servidor de correo que uses.
Otra cosilla que te he eliminado del código es el 'no-reply', ya que poniendo esto, te catalogarán como spam tu mensaje en la mayor parte de los servidores de correo. Te aconsejo, que la cuenta con la que envies el correo tenga configurada bandeja de entrada y salida.

Y ya como ultimo, te he comentado alguna parte del código que yo no uso nunca, y que tampoco sé muy bien para que sirven:

Espero que te sirva de ayuda:

$submit = $_POST['Submit'];
/* Esto te lo comento porque no sé para que te sirve. Si lo que quieres es comprobar que $submit tenga almacenado "Submit", tienes que ponerlo entre comillas dobles para poder compararlo (te lo cambio)
if($submit == "Submit"){
$status = "OK";
*/
$email = $_POST['email'];
$message = $_POST['message'];
$subject = $_POST['subject'];
$name = $_POST['name'];
$phone = $_POST['phone'];
$title = $_POST['title'];
$otros2 = $_POST['otros2'];


$msg="";
$msgerror="";

require_once 'phpmailer/class.phpmailer.php';

$mail = new PHPMailer ();
$mail->IsSMTP();
$mail->SMTPAuth = true;
//$mail->SMTPDebug = 2; // enviar vía SMTP
$mail->Host = "mail.dominio.es"; // servidor SMTP
$mail->Port = 587; //Aquí puede que necesites el 85 u otro. consultalo con tu servidor de correo
$mail->SMTPAuth = true; // activar la identificacín SMTP
$mail->Username = "[email protected]"; // usuario SMTP
$mail->Password = "wappl"; // clave SMTP
$mail->From = "[email protected]"; // remitente
$mail->FromName = "Web dominio.es"; // nombre de remitente
$mail->AddReplyTo('[email protected]');
$mail->AddAddress = $email;
$mail->IsHTML(true); // El correo se envía como HTML
//$mail->MsgHTML(file_get_contents('confirmacion.html')); //Esto te lo comento porque no se para que sirve
$mail->WordWrap = 50; // Ancho del mensaje
//El mensaje debes de ponerlo antes de hacer un send(); por eso te lo pongo aquí
$mensaje = "<html>
<head>
<p><font face=Tahoma, Helvetica, sans-serif size=2 color=#333333>
<strong>Formulari de Contacte Web:</strong></font><br>
<br><hr width=450px align=left><br>
<font face=Tahoma, Helvetica, sans-serif size=2>
<strong>Nombre:</strong> $name.<br>
<strong>Tel&eacute;fono:</strong> $phone.<br>
<strong>T&iacute;tulo:</strong> $title : $otros2.<br>
<strong>Correo Electr&oacute;nico:</strong> $email.<br>
<strong>Mensaje:</strong> $message.</font></p>
<title>Formulario de contacto web - www.midominio.com</title>
</head>
</html>";
//Aquí irían los destinatarios
if($title=="Audiovisuales"){
$mail->AddAddress("[email protected]"); ; // Change this address within quotes to your address //
}else if ($title=="Informatica"){
$mail->AddAddress("[email protected]");
}

$mail->Subject = $subject; //Asunto
$mail->Body = $mensaje; //Cuerpo
//Para comprobar si el email se ha enviado correcto puedes hacerlo así de simple
if ($mail->Send()) {
$msg=" Enviado. <BR />";
//error_reporting(E_ERROR | E_PARSE | E_CORE_ERROR);
}
else {
$msg=" Error. <BR />";
}
//Esto te imprime si se ha enviado el mensaje o no
echo $msg;

UN SALUDO!

Por Applinet

4 de clabLevel



Genero:Femenino  

chrome
Citar            
MensajeEscrito el 26 Ene 2012 04:28 pm
Hola,

Estube probando tu codiigo generado, pero no consigo que me llegue!

Lo he copiado tal cual, he modificado el puerto del mail, pero aun asi no recibo nada...

<?php
$submit = $_POST['Submit']; /*Lo que me has corregido ya lo he modificiado*/
if($submit == "Submit"){
$status = "OK";
$email = $_POST['email'];
$message = $_POST['message'];
$subject = $_POST['subject'];
$name = $_POST['name'];
$phone = $_POST['phone'];
$title = $_POST['title'];
$otros2 = $_POST['otros2'];


$msg="";
$msgerror="";

require_once 'phpmailer/class.phpmailer.php';

$mail = new PHPMailer ();
$mail->IsSMTP();
$mail->SMTPAuth = true;
//$mail->SMTPDebug = 2; // enviar vía SMTP
$mail->Host = "mail.dominio.com"; // servidor SMTP
$mail->Port = 2626; //en el cpanel pone 2626
$mail->SMTPAuth = true; // activar la identificacín SMTP
$mail->Username = "[email protected]"; // usuario SMTP
$mail->Password = "pssw23"; // clave SMTP
$mail->From = "[email protected]"; // [email protected]
$mail->FromName = "www.midominio.com"; // [email protected]
$mail->AddReplyTo('[email protected]');
$mail->AddAddress = $email; //correo del cliente
$mail->IsHTML(true); // El correo se envía como HTML
$mail->MsgHTML(file_get_contents('error_catalan2012.html')); //Esto es un .html que le llega al cliente conforme el mail, me ha sido recibido (me ha llegado).
$mail->WordWrap = 50; // Ancho del mensaje
//Esto es lo que yo recibo(); por eso te lo pongo aquí
$mensaje = "<html>
<head>
<p><font face=Tahoma, Helvetica, sans-serif size=2 color=#333333> //todos estos datos los recibo en [email protected]
<strong>Formulari de Contacte Web:</strong></font><br> //todos estos datos los recibo en [email protected]
<br><hr width=450px align=left><br> //todos estos datos los recibo en [email protected]
<font face=Tahoma, Helvetica, sans-serif size=2> //todos estos datos los recibo en [email protected]
<strong>Nombre:</strong> $name.<br> //todos estos datos los recibo en [email protected]
<strong>Tel&eacute;fono:</strong> $phone.<br> //todos estos datos los recibo en [email protected]
<strong>T&iacute;tulo:</strong> $title : $otros2.<br> //todos estos datos los recibo en [email protected]
<strong>Correo Electr&oacute;nico:</strong> $email.<br> //todos estos datos los recibo en [email protected]
<strong>Mensaje:</strong> $message.</font></p>//todos estos datos los recibo en [email protected]
<title>Formulario de contacto web - www.midominio.com</title> //todos estos datos los recibo en [email protected]
</head>//todos estos datos los recibo en [email protected]
</html>";
if($title=="Audiovisuals"){
$mail->AddAddress("[email protected]"); // Change this address within quotes to your address //
}else if ($title=="Informatica"){
$mail->AddAddress("[email protected]"); // Change this address within quotes to your address //
}else if($title=="error"){
$status="NOTOK";
$msgerror .="* Seleccione un titulo.<BR />";
}


$mail->Subject = $subject; //Asunto
$mail->Body = $mensaje; //Cuerpo
//Para comprobar si el email se ha enviado correcto puedes hacerlo así de simple
$mail->Send();
//Para comprobar el envio, ya lo hace el Submit del post (arriba) que dice si hay algun error de los datos mencionados. Los errores ya estan descritos para cada sintaxis.
if($status=="OK"){
$msg=" mensaje enviado. <BR />";}
}

if ( strlen($name) < 1 ){
$msgerror .="* Nombre.<BR />";
$status= "NOTOK";}


if (!stristr($email,"@") OR !stristr($email,".")) {
$msgerror .="* Correo invalido.<BR />";
$status= "NOTOK";}

if ( strlen($phone) < 9 ){
$msgerror .="* Telefono de 9 cifras.<BR />";
$status= "NOTOK";}


if ( strlen($message) < 10 ){
$msgerror .="* mensaje minimo 10 caracteres.<BR/>";
$status= "NOTOK";}
?>



Lo acabo de modificar, pero aun asi no me funciona. No se si me esplicado bien, y si tu me has entendido.

Recordemos que yo (mail.dominio.com) recibo un mail con sus datos ([email protected]) y el cliente ($email) recibe un mensaje (el .html con imagenes, tipografias...) de que su mensaje lo he recibido.

De todas formas, muchas gracias por todo! Un saludo.

Por ekisdedede

13 de clabLevel



 

firefox
Citar            
MensajeEscrito el 26 Ene 2012 09:59 pm

Código :

$mail->Port = 2626; //


por lo general el SMTP saliente es 25, cmabialo y prueba

Por dsalcedo

50 de clabLevel



Genero:Masculino  

chrome
Citar            
MensajeEscrito el 26 Ene 2012 11:27 pm
Lo he consultado, y efectivamente es 2626 (en mi proveedor de correo, quizas en otros es diferentes)

Por ekisdedede

13 de clabLevel



 

firefox
Citar            
MensajeEscrito el 27 Ene 2012 08:17 am
Hola de nuevo Ekisdedede!!,

Tu no te preocupes que al final conseguimos enviar los mails!!

Entiendo lo que me quieres decir, pero te puse un ejemplo más facil para que probaras el phpmailer de una forma mas sencilla.

Yo te recomendaría que intentaras primero conseguir enviarte un mensaje simple a tu cuenta, y una vez que consigas esto, ir añadiendo al código lo necesario para que haga todo lo que me comentas. Así te resultará mas fácil.

Yo hay una cosa de las que me comentas que no me queda muy clara y es esto:
"//Para comprobar el envio, ya lo hace el Submit del post (arriba) que dice si hay algun error de los datos mencionados. Los errores ya estan descritos para cada sintaxis."

No es lo mismo comprobar que te ha llegado al php un formulario por post, que comprobar que el email se ha enviado. Para comprobar que el formulario se ha enviado: está bien con if($submit == "Submit") y para comprobar que el email ha sido enviado ($mail->Send()) devuelve true...

Y otra cosilla:
" $mail->MsgHTML(file_get_contents('error_catalan2012.html')); //Esto es un .html que le llega al cliente conforme el mail, me ha sido recibido (me ha llegado). "
MsgHTML, no hace que se envie otro email cuando haya sido enviado el actual... o por lo menos eso creo yo.
Yo para hacer eso enviaría el primer email y comprobaría si se ha enviado bien con $mail->Send() y si todo está correcto, volvería a crearme otro email y a enviarlo...

De todos modos, ya te digo que lo mejor es que comiences con un ejemplo mas sencillo y cuando lo consigas le vamos añadiendo cosas.

Un saludo!!

Por Applinet

4 de clabLevel



Genero:Femenino  

chrome
Citar            
MensajeEscrito el 29 Ene 2012 02:48 am
Hola Applinet, gracias por responder!

Antes de nada; Gracias por tomarte la molestia en leerte este post y ayudarme con el tema. Te lo agradezco!

Pues veras, he estado todo el fin de semana (y parte de la noche) mirandome el tema, pero no lo consigo hacer funcionar.

He preguntado a mi proveedor, y hace pruebas desde telnet y dice que el SMTP funciona correctmanete.

Entonces llegue a la conclusion de dejarte el codigo que tengo ahora (que lo hago todo con mail()) y de ahi poco a poco ir haciendo porque bfff... me hago un lio. (mi nivel en programacion es nula, ya te aviso)

<?php
///Con esto comrpuebo los datos, si esta bien envia///
$submit=$_POST['Submit'];
if($submit == Submit){ //Me ha funcionado sin las comillas//
$status = "OK";
$email=$_POST['email'];
$message=$_POST['message'];
$subject=$_POST['subject'];
$name=$_POST['name'];
$phone=$_POST['phone'];
$title=$_POST['title'];
$otros2=$_POST['otros2'];

$msg="";
$msgerror="";
//error_reporting(E_ERROR | E_PARSE | E_CORE_ERROR);


///Nombre////
if ( strlen($name) < 1 ){
$msgerror .="* Escriba su nombre.<BR />";
$status= "NOTOK";}


//Error del mail//
if (!stristr($email,"@") OR !stristr($email,".")) {
$msgerror .="* Correo invalido.<BR />";
$status= "NOTOK";}

///Errror del telefono//
if ( strlen($phone) < 9 ){
$msgerror .="* El telefono ha de tener per 9 cifras.<BR />";
$status= "NOTOK";}


///Este es el titulo del mensaje. El cliente solo ve texto en plano "Opcion1" y res reedirigida a "[email protected]"///

if($title=="Opcion1"){
$headers4="[email protected]"; // Change this address within quotes to your address //
}else if ($title=="Opcion2"){
$headers4="[email protected]"; // Change this address within quotes to your address //
}else if($title=="Opcion3"){
$headers4="[email protected]"; // Change this address within quotes to your address //
}else if($title=="error"){
$status="NOTOK";
$msgerror .="* Seleccione un titulo.<BR />";
}

//Error para el mensaje//
if ( strlen($message) < 10 ){
$msgerror .="* Mensaje minimo 10 caracteres.<BR/>";
$status= "NOTOK";}


//Este es el que recibo en mi mal con sus datos//
if($status=="OK"){// echo $query;
$headers .= "Reply-to:$email\n";
$headers .= "$title";
$headers .= "$otros2";
$headers .= "From: $email\n";
$headers .= "Errors-to: $headers4\n";
$headers .= 'MIME-Version: 1.0 \r\n';
$headers = "Content-Type: text/html; charset=iso-8859-1\r\n".$headers;
mail($headers4,$subject,
"<html>
<head>
<p><font face=Tahoma, Helvetica, sans-serif size=2 color=#333333>
<strong>Formulari de Contacte Web:</strong></font><br>
<br><hr width=450px align=left><br>
<font face=Tahoma, Helvetica, sans-serif size=2>
<strong>Nom:</strong> $name.<br>
<strong>Tel&eacute;fon:</strong> $phone.<br>
<strong>T&iacute;tol:</strong> $title: $otros2.<br>
<strong>Correu Electr&oacute;nic:</strong> $email.<br>
<strong>Missatge:</strong> $message.</font></p>
<title>Formulario de Contacto Web - www.dominio.com</title>
</head>
</html> ","$headers");
$msg=" Enviado.";


//Este es el mensaje que recibe el cliente automaticamente. No es texto en plano (aunque me lo lea asi) Es un archivo .html//
$shtml .= file_get_contents ('https://dominio.com/archivos/confirmacion.html');
$para .= "$email";
$subject .= "RE: $title: $otros2";
$headers .= "Errors-to: $headers4\n";
$headers .= 'MIME-Version: 1.0 \r\n';
$headers = "Content-Type: text/html; charset=iso-8859-1\r\n".$headers;


mail ($para,$subject,$shtml, "From: Nombre <[email protected]>\r\n");
}
}
?>

He empezado a hacerlo funcionar, pero bfff es un dolor de cabeza, no se por donde empezar, le doy a enviar no envia, lo actualizo me da errores de sintaxis....... He intentado hacerlo Basico, pero tampoco funciona, y no se si esque es la cuenta de correo, o si es el codigo, o bffff no se...

He cambiado del "no_reply" a otra con otro nombre y no funcionaba. Puse la del "no_reply" otra vez y si que funcionaba.

Eso es todo, gracias por todo y perdona las molestias!

Salut.

Por ekisdedede

13 de clabLevel



 

firefox
Citar            
MensajeEscrito el 30 Ene 2012 07:43 am
Buenos días Ekisdedede!!...

Antes que nada decirte que no trabajes tanto los fines de semana, que eso no es bueno!! jejejej :P

Yo he probado tu código y todo está correcto, a mí me envió el email...

Por lo que creo que el fallo que te puede estar dando puede ser:
- O por el envio del post....
- Por hacer las pruebas en local sin tener instalado un servidor de correo. Si este fuera el caso te debería dar el error "Warning: mail() [function.mail]: Failed to connect to mailserver at "localhost" port 25, verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set()..."

Como no me comentas nada del error vamos a hacer una prueba sencilla. Prueba a ver que es lo que tienes almacenado en $status justo despues de haber enviado el email, es decir:

mail($headers4,$subject,
"<html>
<head>
<p><font face=Tahoma, Helvetica, sans-serif size=2 color=#333333>
<strong>Formulari de Contacte Web:</strong></font><br>
<br><hr width=450px align=left><br>
<font face=Tahoma, Helvetica, sans-serif size=2>
<strong>Nom:</strong> $name.<br>
<strong>Tel&eacute;fon:</strong> $phone.<br>
<strong>T&iacute;tol:</strong> $title: $otros2.<br>
<strong>Correu Electr&oacute;nic:</strong> $email.<br>
<strong>Missatge:</strong> $message.</font></p>
<title>Formulario de Contacto Web - www.dominio.com</title>
</head>
</html> ","$headers");
$msg=" Enviado.";
echo "estado: ". $status;

Y a ver que es lo que te imprime. Si te imprime OK, y no te envía el email prueba a subirlo a tu FTP y haz la prueba real desde tu servidor.

Suerte!! y un saludo

Por Applinet

4 de clabLevel



Genero:Femenino  

chrome
Citar            
MensajeEscrito el 08 Feb 2012 05:06 pm
hola Applinet,

Perdona mi ausencia, he estado un poco liado estos dias!

Pues veras, al final pude resolverlo todo, enviar y recibir, con sus dtos y el con el .html...

Ahora el problema esta en que sin poner ningun dato, recibo el mail vacio, me explico?

Y al darle a enviar, no te da los errores de los campos que faltan por poner, directamente dice "Error inesperado".

Te dejo el codigo;

function valida_email($email) {
$re= '#^[a-z0-9.!\#$%&\'*+-/=?^_`{|}~]+@([0-9.]+|([^\s]+\.+[a-z]{2,6}))$#si';
return preg_match($re, $email);
}

function validarTelefono($phone)
{
$reg = "#^\(?\d{3}\)?[\s\.-]?\d{3}[\s\.-]?\d{4}$#";
return preg_match($reg, $phone);
}

$submit=$_POST['Submit'];
if($submit == Submit)
{
$status = "OK";
$email=$_POST['email'];
$message=$_POST['message'];
$subject=$_POST['subject'];
$name=$_POST['name'];
$phone=$_POST['phone'];
$title=$_POST['title'];
$otros2=$_POST['otros2'];

$msg="";
$msgerror="";
//error_reporting(E_ERROR | E_PARSE | E_CORE_ERROR);



if ( strlen($name) < 1 )
{
$msgerror .="* Nombre valido.<BR />";
$status= "NOTOK";
}


//if (!stristr($email,"@") OR !stristr($email,"."))
if(!valida_email($email))
{
$msgerror .="* Mail incorrecto.<BR />";
$status= "NOTOK";
}

//if ( strlen($phone) < 9 )
if(validarTelefono($phone))
{
$msgerror .="*Telefono compuesto por 9cifras.<BR />";
$status= "NOTOK";
}


if($title=="Opcion2")
{
$headers4="[email protected]";
}else if($title=="Opcion1"){
$headers4="[email protected]";
}else if($title=="error"){
$status="NOTOK";
$msgerror .="* Seleccione un titulo.<BR />";
}


if ( strlen($message) < 10 )
{
$msgerror .="* Mensaje minimo 10 caracteres.<BR/>";
$status= "NOTOK";
}


$body1="<html>
<head>
<p><font face=Tahoma, Helvetica, sans-serif size=2 color=#333333>
<strong>Formulari de Contacte Web:</strong></font><br>
<br><hr width=450px align=left><br>
<font face=Tahoma, Helvetica, sans-serif size=2>

<title>Formulario de Contacto Web</title>
</head>
<body>
<strong>Nombre:</strong> $name.<br>
<strong>Tel&eacute;fono:</strong> $phone.<br>
<strong>T&iacute;tulo:</strong> $title: $otros2.<br>
<strong>Email:</strong> $email.<br>
<strong>Mensaje:</strong> $message.</font></p>
</body>
</html> ";

require_once 'phpmailer/class.phpmailer.php';

$mail = new PHPMailer ();
$mail -> SetFrom ("[email protected]","[email protected]");
$mail -> AddAddress ("$email","$name");
$mail -> Subject = "$title: $otros2";
$mail -> IsHTML (true);
$mail -> IsSMTP();
$mail -> Host = 'mail.dominio.com';
$mail -> Port = 2626;
$mail -> SMTPDebug = 2;
$mail -> SMTPAuth = true;
$mail -> Username = '[email protected]';
$mail -> Password = 'password';
$mail -> MsgHTML(file_get_contents('www.dominio.com/archivos/recibido.html'));
if ($mail -> Send())
{
$msg=" Missatge enviat. Gràcies.";
}else{
$msgerror=" Error inesperado.";
}

$mail = new PHPMailer ();
$mail -> SetFrom ("[email protected]","[email protected]");
$mail -> AddAddress("$headers4");
$mail -> Subject = "$title: $otros2";
$mail -> IsHTML (true); // pones (true) en caso de usar formato HTML
$mail -> IsSMTP();
$mail -> Host = 'mail.dominio.com';
$mail -> Port = 2626;
$mail -> SMTPAuth = true;
$mail -> Username = '[email protected]';
$mail -> Password = 'password';
$mail -> MsgHTML($body1);
$mail -> Send();
}

Lo mas dificil lo he logrado, solo falta estructurarlo, pero no se como combinarlo con el submit!

Antes tenia la funcion mail() y he ido modificando encima.

Cualquier dato sera bien recibido, muchisimas gracias!

Por ekisdedede

13 de clabLevel



 

firefox
Citar            
MensajeEscrito el 14 Feb 2012 04:04 pm
Hola de nuevo Ekisdede,

Antes de nada, perdona por tardar en contestarte pero es que he estado bastante atareada y me ha sido imposible.

He visto tu código y lo que te ocurre se soluciona poniendo:
// al inicio del php:
$status = "OK"; //Con esto, cuando entramos en el php por defecto vamos a pensar que todo está correcto.
//Justo detrás de la ultima comprobación (
if ( strlen($message) < 10 )
{
$msgerror .="* Mensaje minimo 10 caracteres.<BR/>";
$status= "NOTOK";
} )
//Comprobamos si todo está ok
if ($status == "OK")
{
//Envío de emails
}
else
{
// Aquí deberías hacer una redirección a alguna página donde indicar que hubo un error al enviar el formulario. Yo lo haría algo así:
header ("Location: direccion.php");
exit();
}

Por Applinet

4 de clabLevel



Genero:Femenino  

chrome
Citar            
MensajeEscrito el 15 Feb 2012 12:54 am
hola Applinet,

muchisimas gracias, lo he solucionado!!!!!

lo del reedireccionamiento; aun no he entendido lo del "error inesperado". Me parece que es como el 404 de apache no?

Podrias dejarme tu email o algun dato de contacto por mensaje privado? jejejeje no, no es para que te aburra con mis dudas por contacto privado, es mas bien para agradecerte la ayuda que he recibido. Pues si supieras las noches que me pase sin dormir por poner mal una simple variable..

Bueno yo mas bien manejo temas de diseño grafico, me ofrezco para ayudarte en algun tema o cualquier otro relacionado.

Muchisimas gracias Applinet, porfin puedo dormir tranquilo.. jeje

Por ekisdedede

13 de clabLevel



 

firefox

 

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