Página 1 de 1

SMTP auth() command failed: Incorrect authentication data

NotaPublicado: 2017-09-08 14:42 @654
por danimera
Sencillamente sale eso cuando intento enviar un correo usando SMTP para office365, pero mis credenciales están bien, las he probado en otros clientes de correo y funciona.

Tengo un script así:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1.     $msg = $msg->build(
  2.         From     => $q->param('email'),
  3.         To       => '[email protected]',
  4.         Subject  => "Mensaje desde la pagina:".$q->param('asunto'),
  5.         Type     => 'text/html',
  6.         Encoding =>'8bit',
  7.         Data     => $html
  8.     );
  9.  
  10.     $msg->send( 'smtp','smtp.office365.com', AuthUser=>'[email protected]', AuthPass=>'xxxxxxx', Port => '587'  );
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4

Usando mime-lite con el módulo

Net::SMTP::auth()

No sé si será un problema del servidor, tampoco me funciona en el dada mail en el cual obtengo un log como este:
Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
  1. <<< 220-host2.xxxxx.com ESMTP Exim 4.89 #1 Fri, 08 Sep 2017 15:41:55 -0400
  2. <<< 220-We do not authorize the use of this system to transport unsolicited,
  3. <<< 220 and/or bulk e-mail.
  4. >>> EHLO xxxxxx.com
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4

y también sale esto por el log
Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
  1. <<< 535 Incorrect authentication data
  2. Looks like there's something wrong with your username/password - double check that you entered them right.
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4

pero definitivamente las credenciales no son.

Re: SMTP auth() command failed: Incorrect authentication dat

NotaPublicado: 2017-09-08 15:47 @699
por explorer
No es el Net::SMTP el que debes usar, sino el Net::SMTP::TLS.

Si el puerto de conexión es el 465, entonces la comunicación va encriptada con TLS, así que necesitas ese protocolo.

Si el puerto fuera el 25 o el 587, no sería necesario, y podrías utilizar Net::SMTP.

Este ejemplo lo he sacado de un artículo del 2014, así que habrá cambiado algo en estos tres años. Por ejemplo, no me cuadra el uso del protocolo TLS con el puerto 587, pero todo depende de lo que diga la documentación de Micro$oft.
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!/usr/bin/perl
  2. use strict;
  3. use Net::SMTP::TLS;  
  4.  
  5. #
  6. my $mailer = new Net::SMTP::TLS(  
  7.     'smtp.office365.com',
  8.     Port    =>      587,  
  9.     Hello   =>      '',
  10.     User    =>      'Username-Email-ID',
  11.     Password=>      'Password',
  12.     Debug   => 1) || die "Cannot connect to smtp server";
  13.  
  14. $mailer->mail('[email protected]');
  15. $mailer->to('[email protected]');
  16. $mailer->data;  
  17. $mailer->datasend("\n");  
  18. $mailer->datasend("Sent from perl!");  
  19. $mailer->dataend;  
  20. $mailer->quit;
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

Repasa mi respuesta a otra de tus consultas: Enviar email desde CGI::Application.

Otros enlaces que dan más soluciones:

Re: SMTP auth() command failed: Incorrect authentication dat

NotaPublicado: 2017-09-08 15:58 @707
por danimera
El puerto es el 587 y sí toca usar STARTTLS. Yo creo que el problema es el servidor y no la programación de Perl, ya que no me funciona ni usando el DadaMail ni un script de Perl... :( Estoy frito.

Re: SMTP auth() command failed: Incorrect authentication dat

NotaPublicado: 2017-09-11 03:33 @189
por explorer
¿Has probado el ejemplo que te he puesto con Net::SMTP::TLS?