Foros del Web » Programando para Internet » PHP »

¿mail() o PHPmailer?

Estas en el tema de ¿mail() o PHPmailer? en el foro de PHP en Foros del Web. Se que es un tema sencillo, pero tengo dudas para empezar a llevarlo a cabo. Mi idea es hacer un formulario de contacto que es ...
  #1 (permalink)  
Antiguo 24/12/2010, 08:39
Avatar de Gambinoh  
Fecha de Ingreso: diciembre-2010
Mensajes: 348
Antigüedad: 13 años, 5 meses
Puntos: 11
¿mail() o PHPmailer?

Se que es un tema sencillo, pero tengo dudas para empezar a llevarlo a cabo. Mi idea es hacer un formulario de contacto que es lo único que me queda para completar mi web. A pesar de que pienso ir mejorando y puliendo detalles.

La cosa es que veo que se habla de dos métodos: por un lado la funcion mail() de PHP y por otro la clase clase phpmailer.

Creo que esta última usualmente se sirve de un servidor de correo de gmail para mandar los correos y que de esa manera se facilita que hotmail, yahoo y otros servidores de correo no te los filtren como spam y tal.

Entonces mi pregunta es ¿cuales son las ventajas y desventajas de usar la función mail() de PHP, que hay que hacer para recibirlo en una cuenta de hotmail?
  #2 (permalink)  
Antiguo 24/12/2010, 08:57
 
Fecha de Ingreso: diciembre-2010
Ubicación: Rosario, Santa Fe
Mensajes: 326
Antigüedad: 13 años, 4 meses
Puntos: 13
Respuesta: ¿mail() o PHPmailer?

PHPMailer es una clase que facilita el envio de mails en PHP, esto implica que todo lo que hace la clase lo podes hacer con PHP. Si no usas smtp envia con la función mail, si especificas el tema de envio de SMTP usará las funciones de SMTP que tiene PHP.
Lo que tiene esta clase es que tiene muchas utilidades como envio de archivos de forma facil sin complicaciones y si queremos cambiar de mail a SMTP es solo cambiar un par de cosas y no todo el código como si lo escribieramos integramante nosotros.
Desde mi punto de vista, te sugiero que uses PHPMailer que es una muy buena clase y aunque al principio tenga sus cosas cuando le agarras la mano es muy util.
  #3 (permalink)  
Antiguo 30/12/2010, 11:29
 
Fecha de Ingreso: marzo-2004
Mensajes: 199
Antigüedad: 20 años, 1 mes
Puntos: 1
Respuesta: ¿mail() o PHPmailer?

Bueno ya leyendo todo en este tema definitivamente no pude solucionar lo mio y es lo siguiente

tengo estos dos codigos para envio de correo

<?php /*
require("class.phpmailer.php");
$mail = new PHPMailer();
$mail->Host = "localhost";
$email = $_POST['email'];
$pregunta = $_POST['pregunta'];

$mail->From = $email;
$mail->Subject = "Correo enviado desde el sitio web";
$mail->AddAddress("[email protected]");

$body = "Correo enviado por: " . $_POST['email'] . " \r\n";
$body .= "Y pregunta: " . $_POST['pregunta'] . " \r\n";
$mail->Body = $body;

$mail->Send();
echo "<meta http-equiv=refresh content=0;URL=index.php>";
*/
?>

Y ESTE OTRO

<?php

$email = $_POST['email'];
$pregunta = $_POST['pregunta'];


$header = 'From: ' . $email . " \r\n";
$header .= "X-Mailer: PHP/" . phpversion() . " \r\n";
$header .= "Mime-Version: 1.0 \r\n";
$header .= "Content-Type: text/plain";


$mensaje .= "Mensaje enviado por: " . $email . " \r\n";
$mensaje .= "Sy su pregunta es: " . $pregunta . " \r\n";
$mensaje .= "Enviado el " . date('d/m/Y', time());
$para = '[email protected]';
$asunto = 'CORREO DESDE EL SITIO WEB ';

mail($para, $asunto, utf8_decode($mensaje), $header);

echo "<meta http-equiv=refresh content=0;URL=index.php>";

?>

El segundo código siempre lo uso en los forms q hago, pero resulta q no me llega a todas las cuentas q son empresariales y redireccionadas a gmail por google apps.
Leyendo lo aqui expuesto entonces adapte todo y me quedo el segundo codigo, pero pasa lo mismo, no envia los correos a todas las cuentas q necesito.

Q puede estar pasando?

Gracias
  #4 (permalink)  
Antiguo 30/12/2010, 11:39
 
Fecha de Ingreso: agosto-2010
Mensajes: 27
Antigüedad: 13 años, 8 meses
Puntos: 0
Respuesta: ¿mail() o PHPmailer?

Sabes algo...

Yo tambien estoy bien confundido, y es que he estado intentando muchas cosas pero esto da dolor de cabeza, ya tengo tiempo asi, espero que alguien nos pueda ayudar y ahora que tu dices que que hay dos una CLASE y otra FUNCION....??????esta para bolverse loco no crees??

pero bueno lo mas dificil es lo que valoras mas... no te heches para atras....

Yo tengo este codigo de una plantilla monster y no lo puedo hechar a andar no se que sera que hay que hacer...
lo que esta en azul es lo que supuestamente tengo que cambiar, no se que poner... espero alguien nos heche la mano...

<?php
//Type the receiever's e-mail address$emailAddress = "[email protected] ";
//Type your Site Name$siteName = "asp ";

$contact_name = $_POST['name'];
$contact_email = $_POST['email'];
$contact_subject = $_POST['subject'];
$contact_message = $_POST['message'];

if( $contact_name == true ) {
$sender = $contact_email;
$receiver = $emailAddress;
$client_ip = $_SERVER['REMOTE_ADDR'];

$email_body = "The Name Of The Sender: $contact_name \nEmail: $sender \n\nSubject: $contact_subject
\n\nMessage: \n\n$contact_message \n\nIP ADDRESS: $client_ip \n\n$siteName";

$emailAutoReply = "Hi $contact_name, \n\nWe have just received your E-Mail. We will get
in touch in a few days. Thank you! \n\n$siteName ";

$extra = "From: $sender\r\n" . "Reply-To: $sender \r\n" . "X-Mailer: PHP/" . phpversion();
$autoReply = "From: $receiver\r\n" . "Reply-To: $receiver \r\n" . "X-Mailer: PHP/" . phpversion();

mail( $sender, "Auto Reply: $contact_subject", $emailAutoReply, $autoReply );

if( mail( $receiver, "New E-Mail - $contact_subject", $email_body, $extra ) ) {
echo "success=yes";
} else {
echo "success=no";
}
}
?>
  #5 (permalink)  
Antiguo 30/12/2010, 13:01
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: ¿mail() o PHPmailer?

Chininino, ¿como que no sabes que escribir?

pero si en color naranja -antes del azul- dice lo que debes escribir...
Cita:
//Type the receiever's e-mail address
$emailAddress = "[email protected] ";
//Type your Site Name
$siteName = "asp ";
me da curiosidad saber si conoces los traductores en linea...
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #6 (permalink)  
Antiguo 30/12/2010, 13:10
Avatar de Gambinoh  
Fecha de Ingreso: diciembre-2010
Mensajes: 348
Antigüedad: 13 años, 5 meses
Puntos: 11
Respuesta: ¿mail() o PHPmailer?

Cita:
Iniciado por pateketrueke Ver Mensaje
Chininino, ¿como que no sabes que escribir?

pero si en color naranja -antes del azul- dice lo que debes escribir...


me da curiosidad saber si conoces los traductores en linea...
Vaya, me sorprende ver este hilo comentado, porque hacía tiempo que me decanté por una opción entre ambos debido principalmente a que yo uso php 5.3 y este no soporta la clase PHPmailer.

De todas formas como aportación para aquellos que quieran colocar un formulario para enviar a sus correos, se ve que la cuestión es de servidores, no de métodos. Si el servidor de hotmail no considera fiable el servidor smtp de origen te manda al carajo y eso es imposible de evitar que yo sepa mientras ellos usen filtros tan eficientes.

Por eso yo decidí usar mail() y mandarme el correo y recibirlo a través del mismo servidor smtp de la empresa a la que le contrato el hosting, así de paso (aunque no era la idea inicial) tendré un correo más corporativo tipo [email protected].

Espero que te sirva mi consejo principal, el que está en negrita.
  #7 (permalink)  
Antiguo 30/12/2010, 14:03
 
Fecha de Ingreso: agosto-2010
Mensajes: 27
Antigüedad: 13 años, 8 meses
Puntos: 0
Pregunta Respuesta: ¿mail() o PHPmailer?

Pues la verdad es que yo le puse los colores porque eso es lo que se tiene que editar, pero esque ya intente varias maneras y no me funciona mira..

<?php
//Type the receiever's e-mail address$emailAddress = "[email protected] ";
//Type your Site Name$siteName = "asp ";



intente con mi correo
[email protected]
en eso no creo que hay error..
despues me pide mi SITE NAME
puse este... http://www.magicwebdesigne.comtambien intente con esto
ASPy con esto.

mail.live.com

Y al parecer nada funciona, que esta mal?


tambien intente mandarlo al correo de mi pagina..

[email protected]

Yo creo que en lo que no estoy seguro y ya me enrrede es el site name.. cual es POR EJEMPLO SI USO HOTMAIL CUAL ES EL SITE NAME,,
Y SI USO INFO@MAGICWEBDESIGNE CUAL ES EL SITE NAME.

GRACIAS POR SU AYUDA CHAVOS
  #8 (permalink)  
Antiguo 30/12/2010, 14:06
 
Fecha de Ingreso: agosto-2010
Mensajes: 27
Antigüedad: 13 años, 8 meses
Puntos: 0
Respuesta: ¿mail() o PHPmailer?

El comentario de GAMBINOH si esta interesante, pero dime como lo mando entonces a mi servidor, y cual es el smtp de mi servidor,,,, IPAGE.COM ese es mi servidor...
  #9 (permalink)  
Antiguo 30/12/2010, 15:02
Avatar de Gambinoh  
Fecha de Ingreso: diciembre-2010
Mensajes: 348
Antigüedad: 13 años, 5 meses
Puntos: 11
Respuesta: ¿mail() o PHPmailer?

Cita:
Iniciado por Chininino Ver Mensaje
Pues la verdad es que yo le puse los colores porque eso es lo que se tiene que editar, pero esque ya intente varias maneras y no me funciona mira..

<?php
//Type the receiever's e-mail address$emailAddress = "[email protected] ";
//Type your Site Name$siteName = "asp ";



intente con mi correo
[email protected]
en eso no creo que hay error..
despues me pide mi SITE NAME
puse este... http://www.magicwebdesigne.comtambien intente con esto
ASPy con esto.

mail.live.com

Y al parecer nada funciona, que esta mal?


tambien intente mandarlo al correo de mi pagina..

[email protected]

Yo creo que en lo que no estoy seguro y ya me enrrede es el site name.. cual es POR EJEMPLO SI USO HOTMAIL CUAL ES EL SITE NAME,,
Y SI USO INFO@MAGICWEBDESIGNE CUAL ES EL SITE NAME.

GRACIAS POR SU AYUDA CHAVOS
A ver suponiendo que lo que quieres es enviar los campos de un formulario a través de la clase PHPmailer, yo recuerdo haberla usado antes creo, pero se ve que no es tan sencillo. En principio necesitas sí o sí un servidor smtp...

Por ejemplo el código podría ser este de la página programación.com:

Código PHP:
Ver original
  1. <?
  2.   require "includes/class.phpmailer.php";
  3.  
  4.   $mail = new phpmailer();
  5.  
  6.   $mail->PluginDir = "includes/";
  7.  
  8.   $mail->Mailer = "smtp";
  9.  
  10. //Asignamos a Host el nombre de nuestro servidor smtp
  11.   $mail->Host = "smtp.hotpop.com";
  12.  
  13.   $mail->SMTPAuth = true;
  14.  
  15.   $mail->Username = "[email protected]";
  16.  
  17.   $mail->Password = "mipassword";
  18.  
  19.   $mail->From = "[email protected]";
  20.  
  21.   $mail->FromName = "Eduardo Garcia";
  22.  
  23.   //el valor por defecto 10 de Timeout es un poco escaso dado que voy a usar
  24.   //una cuenta gratuita, por tanto lo pongo a 30  
  25.   $mail->Timeout=30;
  26.  
  27.   //Indicamos cual es la dirección de destino del correo
  28.   $mail->AddAddress("[email protected]");
  29.  
  30.   $mail->Subject = "Prueba de phpmailer";
  31.  
  32.   $mail->Body = "<b>Mensaje de prueba mandado con phpmailer en formato html</b>";
  33.  
  34.   //Definimos AltBody por si el destinatario del correo no admite email con formato html
  35.   $mail->AltBody = "Mensaje de prueba mandado con phpmailer en formato solo texto";
  36.  
  37.   $exito = $mail->Send();
  38.  
  39.   //para intentar enviar el mensaje, cada intento se hara 5 segundos despues
  40.   //del anterior, para ello se usa la funcion sleep
  41.   $intentos=1;
  42.   while ((!$exito) && ($intentos < 5)) {
  43.     sleep(5);
  44.         //echo $mail->ErrorInfo;
  45.         $exito = $mail->Send();
  46.         $intentos=$intentos+1; 
  47.    
  48.    }
  49.  
  50.        
  51.    if(!$exito)
  52.    {
  53.     echo "Problemas enviando correo electrónico a ".$valor;
  54.     echo "<br/>".$mail->ErrorInfo; 
  55.    }
  56.    else
  57.    {
  58.     echo "Mensaje enviado correctamente";
  59.    }
  60. ?>

Igual que aquí proponen usar el servidor de hotpop, también se puede usar el servidor de gmail. Teniendo una cuenta de correo de gmail mandar a través de smtp.gmail.com y recibir en una cuenta gmail, logicamente pondrías tu contraseña y tu cuenta en donde pone:

$mail->Username = "[email protected]";

$mail->Password = "mipassword";

En la sección de aportes de php también tienes otro modelo, en el que podrías tambien usar gmail para mandar y recibir, segun creo, no te lo puedo confirmar seguro pero creo que sí, al menos eso recuerdo, siempre que la cuenta que recibe sea gmail.

http://www.forosdelweb.com/f18/metodo-definitivo-para-mandar-correos-con-phpmailer-que-si-lleguen-hotmail-630896/

Código PHP:
Ver original
  1. //Incluimos la función
  2. require_once('../phpmailer/class.phpmailer.php');
  3. //Creamos la instancia de la clase PHPMailer y configuramos la cuenta
  4. $mail=new PHPMailer();
  5. $mail->Mailer="smtp";
  6. $mail->Helo = "www.eldominioqueusas.com.mx"; //Muy importante para que llegue a hotmail y otros
  7. $mail->SMTPAuth=true;
  8. $mail->Host="eldominioqueusas.com.mx";
  9. $mail->Port=26; //depende de lo que te indique tu ISP. El default es 25, pero nuestro ISP lo tiene puesto al 26
  10. $mail->Username="[email protected]";
  11. $mail->Password="******";
  12. $mail->From="[email protected]";
  13. $mail->FromName="El Nombre del Remitente";
  14. $mail->Timeout=60;
  15. $mail->IsHTML(true);
  16. //Enviamos el correo
  17. $mail->AddAddress('[email protected]'); //Puede ser Hotmail
  18. $mail->Subject='Tu asunto';
  19. $mail->Body="<p>Texto lo suficientemente largo y con pocos links para que no sea interpretado como SPAM</p><p>Es importante que el texto sea lo suficientemente largo, ya que si sólo tienes por ejemplo, una frase y un link, asume tanto Outlook como la mayoría de los destinatarios, que se trata de SPAM</p><p>Pero si tu texto es largo y tienes un link a <a href\"http://www.forosdelweb.com\">Foros del web</a> por ejemplo, funcionará perfectamente bien.</p>";
  20. $mail->AltBody="Texto que debe decir lo mismo que el Body, pero sin etiquetas HTML";
  21. $exito = $mail->Send();
  22. if($exito){
  23.      $mail->ClearAddresses();
  24.      echo "Mensaje enviado exitosamente";
  25. }

Etiquetas: mail, phpmailer
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 21:53.