Foros del Web » Programando para Internet » PHP »

phpmailer()

Estas en el tema de phpmailer() en el foro de PHP en Foros del Web. Hola foreros, Copie un código para crear un formulario de contacto con phpmailer() pero tengo éste mensaje de error que no he podido solucionarlo, por ...
  #1 (permalink)  
Antiguo 08/09/2011, 16:22
 
Fecha de Ingreso: junio-2008
Mensajes: 9
Antigüedad: 15 años, 10 meses
Puntos: 0
phpmailer()

Hola foreros,

Copie un código para crear un formulario de contacto con phpmailer() pero tengo éste mensaje de error que no he podido solucionarlo, por favor podrían ayudarme, no tengo experiencia con php.
De antemano muchas gracias

SMTP -> FROM SERVER: 220 vux.bos.netsolhost.com ESMTP Sendmail 8.14.4/8.14.4; Thu, 8 Sep 2011 18:09:07 -0400 SMTP -> FROM SERVER: 250-vux.bos.netsolhost.com Hello 941570.968269@localhost [127.0.0.1], pleased to meet you 250-ENHANCEDSTATUSCODES 250-PIPELINING 250-EXPN 250-VERB 250-8BITMIME 250-SIZE 250-DSN 250-ETRN 250-DELIVERBY 250 HELP SMTP -> ERROR: AUTH not accepted from server: 500 5.5.1 Command unrecognized: "AUTH LOGIN" SMTP -> FROM SERVER: 250 2.0.0 Reset state Message Sent OK

Éste es el código:

<?
require_once("class.phpmailer.php");
//include("class.smtp.php"); // optional, gets called from within class.phpmailer.php if not already loaded

$mail = new PHPMailer(true); // the true param means it will throw exceptions on errors, which we need to catch

$mail->IsSMTP(); // telling the class to use SMTP

try {
$mail->Host = "localhost"; // SMTP server
$mail->SMTPDebug = 2; // enables SMTP debug information (for testing)
$mail->SMTPAuth = true; // enable SMTP authentication
$mail->Host = "localhost"; // sets the SMTP server
$mail->Port = 25; // set the SMTP port for the GMAIL server
$mail->Username = "[email protected]"; // SMTP account username
$mail->Password = "xxxx"; // SMTP account password
$mail->AddReplyTo('[email protected]', 'First Last');
$mail->AddAddress('[email protected]', 'John Doe');
$mail->Subject = 'PHPMailer Test Subject via mail(), advanced';
$mail->AltBody = 'To view the message, please use an HTML compatible email viewer!'; // optional - MsgHTML will create an alternate automatically
// $mail->MsgHTML(file_get_contents('contents.html'));
//$mail->AddAttachment('images/phpmailer.gif'); // attachment
//$mail->AddAttachment('images/phpmailer_mini.gif'); // attachment
$mail->Send();
echo "Message Sent OK<P></P>\n";
} catch (phpmailerException $e) {
echo $e->errorMessage(); //Pretty error messages from PHPMailer
} catch (Exception $e) {
echo $e->getMessage(); //Boring error messages from anything else!
}
  #2 (permalink)  
Antiguo 08/09/2011, 16:36
 
Fecha de Ingreso: julio-2011
Ubicación: Zapopan, Jal. MX
Mensajes: 316
Antigüedad: 12 años, 9 meses
Puntos: 32
Respuesta: phpmailer()

Hola, yo siempre he preferido usar la función mail(), pues se me hace mucho más fácil de usarla y en mi opinion es menos código ya que no depende de una librería.
  #3 (permalink)  
Antiguo 08/09/2011, 17:26
Avatar de KoswiDigital  
Fecha de Ingreso: abril-2011
Ubicación: Galicia - España
Mensajes: 220
Antigüedad: 13 años
Puntos: 37
Respuesta: phpmailer()

Parece que falla en la autenticación con el servidor. De todas formas, si quieres, te dejo un código más limpio que ese.

Código PHP:
Ver original
  1. <?php
  2.     require_once('class.phpmailer.php');
  3.     //include("class.smtp.php");
  4.    
  5.     $mail = new PHPMailer();
  6.     $mail->SetLanguage("es", "");
  7.     $mail->CharSet = "UTF-8";
  8.  
  9.     $mail->IsSMTP();
  10.     $mail->SMTPAuth = true;
  11.  
  12.     $mail->Host = // nombre del servidor;
  13.     $mail->Port = // puerto (normalmente, 25);
  14.  
  15.     $mail->Username = // nombre de usuario
  16.     $mail->Password = // contraseña
  17.  
  18.     $mail->AddAddress(/*dirección de destino , nombre de a quien se envía */);
  19.     $mail->AddReplyTo(/* dirección de respuesta , nombre de respuesta */);
  20.     $mail->SetFrom(/* dirección desde la que se envía , nombre del que lo envía */);
  21.    
  22.     $mail->IsHTML(true);
  23.    
  24.     $mail->Subject = // asunto
  25.    
  26.     $mail->Body = "
  27.                                    <html>
  28.                                    <head>
  29.                                        <meta http-equiv='Content-Type' content='text/html; charset=utf-8' />
  30.                                    </head>
  31.                                    <body>
  32.                                        <table>
  33.                                        </table>
  34.                                    </body>
  35.                                    </html>
  36.                                ";
  37.    
  38.     $mail->AltBody = "";
  39.    
  40.     if( !$mail->Send() )
  41.     {
  42.         echo( 'error' );
  43.         exit();
  44.     }
  45.     else
  46.     {
  47.         echo( 'ok' );
  48.         exit();
  49.     }
  50. ?>
__________________
http://www.koswidigital.com - Diseño web, Programación web, Fotografía profesional, Retoque digital.
  #4 (permalink)  
Antiguo 08/09/2011, 22:02
 
Fecha de Ingreso: julio-2011
Ubicación: Zapopan, Jal. MX
Mensajes: 316
Antigüedad: 12 años, 9 meses
Puntos: 32
Respuesta: phpmailer()

Agradable código!
  #5 (permalink)  
Antiguo 08/09/2011, 22:24
Avatar de bet7o  
Fecha de Ingreso: febrero-2010
Ubicación: DF
Mensajes: 315
Antigüedad: 14 años, 2 meses
Puntos: 20
Respuesta: phpmailer()

No te funciona porque necesitas un servidor SMTP en tu pc, estas ocupando en el host tu pc o localhost.

Intenta configurarlo con una cuenta de gmail por ejemplo, no es complicado y bueno tambien mas recomendado usar phpmailer que la funcion mail

Saludos!
__________________
Pero el no contaba con una cosa, mi peligroso desinteres por la vida humana
  #6 (permalink)  
Antiguo 09/09/2011, 13:13
 
Fecha de Ingreso: junio-2008
Mensajes: 9
Antigüedad: 15 años, 10 meses
Puntos: 0
Respuesta: phpmailer()

Estoy ocupando localhost porque donde tengo el dominio(Network Solutions) me dice que debo poner localhost, y ahora me sale el mensaje :Fatal error: Call to undefined method PHPMailer::SetFrom() in /data/17/0/126/81/941570/user/968269/htdocs/solo/enviar.php on line 35

Puede ser por la versión del phpmailer()??
La línea 55 es del SetFrom,
Qué puede ser foreros?
  #7 (permalink)  
Antiguo 09/09/2011, 13:23
 
Fecha de Ingreso: julio-2011
Ubicación: Zapopan, Jal. MX
Mensajes: 316
Antigüedad: 12 años, 9 meses
Puntos: 32
Respuesta: phpmailer()

Sabes... si usas windows necesitas un tipo de licencia para montar un server SMTP en tu PC y en Linux es totalmente gratis usando sendmail, pero si insistes en Windows, puedes encontrar un sendmail simulado, buscalo en google como "fake sendmail".
Pero la cosas aún no termina por que necesitas sabes configurar el .ini del sendmail y el .ini de PHP para que corra con sendmail y entonces podrás hacerlo funcionar.
De hecho yo tengo una aplicación en PHP que usa fake sendmail y la función mail() y creeme que me funciona perfectamente para enviar mensajes a cualquier servidor POP3.
Si lo logras hacerlo funcionar, envíame un MP y te paso todo el código fuente que yo utilizo y las configuraciones para los archivos .ini.
Saludos
  #8 (permalink)  
Antiguo 09/09/2011, 21:15
Avatar de hasdpk  
Fecha de Ingreso: agosto-2011
Ubicación: $spain->city( 'Arucas' );
Mensajes: 1.800
Antigüedad: 12 años, 7 meses
Puntos: 297
Respuesta: phpmailer()

Es como te han dicho, necesitas un servidor SMTP, te vale cualquier.. Hotmail, Yahoo, Gmail e inlcuso el correo de tu hosting muy probablemente acepta SMTP.

Recuerda que para enviar una petición SMTP tienes que tener OpenSSL activado en el Apache de tu ordenador.
  #9 (permalink)  
Antiguo 10/09/2011, 06:16
Avatar de KoswiDigital  
Fecha de Ingreso: abril-2011
Ubicación: Galicia - España
Mensajes: 220
Antigüedad: 13 años
Puntos: 37
Respuesta: phpmailer()

Cita:
Iniciado por Nelita_bg Ver Mensaje
Estoy ocupando localhost porque donde tengo el dominio(Network Solutions) me dice que debo poner localhost, y ahora me sale el mensaje :Fatal error: Call to undefined method PHPMailer::SetFrom() in /data/17/0/126/81/941570/user/968269/htdocs/solo/enviar.php on line 35

Puede ser por la versión del phpmailer()??
La línea 55 es del SetFrom,
Qué puede ser foreros?

Sí que podría ser por la versión del PHPMailer, aunque es raro que cambien los métodos. En todo caso, lo pone bien claro, "call to undefined method". También puede ser que no hayas puesto bien los valores.

Aquí tienes la lista de métodos de PHPMailer: http://phpmailer.worxware.com/index.php?pg=methods

Recuerda que debes poner $mail->SetFrom("[email protected]" , "nombre de quien envía"). Son 2 los valores a indicar.


Seguro que el fallo es una pequeñez. Echa un vistazo y nos comentas. Un saludo.
__________________
http://www.koswidigital.com - Diseño web, Programación web, Fotografía profesional, Retoque digital.

Etiquetas: html, formulario
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




La zona horaria es GMT -6. Ahora son las 19:35.