Página 1 de 1

Error SMTP auth() contra office365

NotaPublicado: 2014-11-24 08:08 @381
por audax
Estimados,

Tengo un problemita con lo siguiente. Resulta que estoy intentando enviar un correo desde una máquina de Windows. Yo ocupo la librería MIME::Lite, y como servidor outlook.office365.com. Este el código.


Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1.         my $msg = MIME::Lite->new(
  2.                 From    => $remitente,
  3.                 To      => $destinatario,
  4.                 Subject => 'Reporte de Error '.$fecha,
  5.                 Type    => 'multipart/mixed'
  6.         );
  7.  
  8.     ### Add parts (each "attach" has same arguments as "new"):
  9.         $msg->attach(
  10.                 Type     => 'TEXT',
  11.                 Data     => 'Reporte de Errores.'
  12.         );
  13.        
  14.         if ($archivoerror == 1)
  15.         {
  16.                 $nombreArchivoError = &nombreError();
  17.                
  18.                 $msg->attach(
  19.                 Path     => 'Temp/'.$nombreArchivoError,
  20.                 Type     => 'application/msword',
  21.                 Encoding => 'base64',
  22.                 );
  23.         }
  24.        
  25.         ### use Net:SMTP to do the sending
  26.         $msg->send('smtp',$host ,AuthUser=>$remitente,AuthPass=>$pass,Debug=>1 );
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4


y me da el siguiente resultado.

Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
MIME::Lite::SMTP>>> MIME::Lite::SMTP
MIME::Lite::SMTP>>>   Net::SMTP(2.32)
MIME::Lite::SMTP>>>     Net::Cmd(2.30)
MIME::Lite::SMTP>>>       Exporter(5.68)
MIME::Lite::SMTP>>>     IO::Socket::INET(1.33)
MIME::Lite::SMTP>>>       IO::Socket(1.34)
MIME::Lite::SMTP>>>         IO::Handle(1.33)
MIME::Lite::SMTP=GLOB(0x3b48280)<<< 220 BN1PR08CA0031.outlo
osoft ESMTP MAIL Service ready at Mon, 24 Nov 2014 13:04:04
MIME::Lite::SMTP=GLOB(0x3b48280)>>> EHLO localhost.localdom
MIME::Lite::SMTP=GLOB(0x3b48280)<<< 250-BN1PR08CA0031.outlo
o [190.153.236.146]
MIME::Lite::SMTP=GLOB(0x3b48280)<<< 250-SIZE 78643200
MIME::Lite::SMTP=GLOB(0x3b48280)<<< 250-PIPELINING
MIME::Lite::SMTP=GLOB(0x3b48280)<<< 250-DSN
MIME::Lite::SMTP=GLOB(0x3b48280)<<< 250-ENHANCEDSTATUSCODES
MIME::Lite::SMTP=GLOB(0x3b48280)<<< 250-STARTTLS
MIME::Lite::SMTP=GLOB(0x3b48280)<<< 250-8BITMIME
MIME::Lite::SMTP=GLOB(0x3b48280)<<< 250-BINARYMIME
MIME::Lite::SMTP=GLOB(0x3b48280)<<< 250 CHUNKING
SMTP auth() command not supported on outlook.office365.com
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4



Si alguien caritativo me puede dar algún enlace o decir qué puedo hacer estaré muy agradecido.

Re: Error SMTP auth()

NotaPublicado: 2014-11-24 14:28 @644
por explorer
Google me dice que ese servidor no tiene soporte para recibir peticiones SMTP externas. Que lo correcto sería usar smtp.office365.com

Re: Error SMTP auth()

NotaPublicado: 2014-11-25 15:25 @684
por audax
Gracias, explorer, por la respuesta. Me falta estudiar más los conceptos relacionados con el correo.

Re: Error SMTP auth()

NotaPublicado: 2015-11-04 09:50 @451
por audax
Retomando este tema después de un tiempo, cambié el hostmail y aparece el mismo mensaje. No sé qué puede ser, ya que con otros host que no sean de office365 funciona sin problemas. Gracias por todo.

Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
MIME::Lite::SMTP>>> MIME::Lite::SMTP
MIME::Lite::SMTP>>>   Net::SMTP(2.34)
MIME::Lite::SMTP>>>     Net::Cmd(2.30)
MIME::Lite::SMTP>>>       Exporter(5.70)
MIME::Lite::SMTP>>>     IO::Socket::INET(1.33)
MIME::Lite::SMTP>>>       IO::Socket(1.36)
MIME::Lite::SMTP>>>         IO::Handle(1.34)
MIME::Lite::SMTP=GLOB(0x530f558)<<< 220 BN3PR15CA0018.outlook.office365.com Microsoft ESMTP MAIL Service ready at Wed, 4 Nov 2015 14:47:25 +0000
MIME::Lite::SMTP=GLOB(0x530f558)>>> EHLO localhost.localdomain

MIME::Lite::SMTP=GLOB(0x530f558)<<< 250-BN3PR15CA0018.outlook.office365.com Hello [200.107.67.34]
MIME::Lite::SMTP=GLOB(0x530f558)<<< 250-SIZE 157286400
MIME::Lite::SMTP=GLOB(0x530f558)<<< 250-PIPELINING
MIME::Lite::SMTP=GLOB(0x530f558)<<< 250-DSN
MIME::Lite::SMTP=GLOB(0x530f558)<<< 250-ENHANCEDSTATUSCODES
MIME::Lite::SMTP=GLOB(0x530f558)<<< 250-STARTTLS
MIME::Lite::SMTP=GLOB(0x530f558)<<< 250-8BITMIME
MIME::Lite::SMTP=GLOB(0x530f558)<<< 250-BINARYMIME
MIME::Lite::SMTP=GLOB(0x530f558)<<< 250 CHUNKING
SMTP auth() command not supported on smtp.office365.com
 
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4

Re: Error SMTP auth()

NotaPublicado: 2015-11-04 19:04 @836
por explorer
Micro$oft tiene instrucciones para permitir el envío de correo de forma autenticada. Como verás, hay que cambiar el nombre del servidor y el puerto de entrega del correo.

Re: Error SMTP auth()

NotaPublicado: 2015-11-05 07:16 @345
por audax
Gracias por contestar, pero, ¿a qué te refieres con cambiar el servidor? Yo solo tengo los servidores smtp.office365.com y outlook.office365.com. ¿Te refieres a cambiar esto? ¿Algo así como pop3.office365.com o mail.authsmtp.com? ¿Me puedes dar un ejemplo, por favor, que no entendí mucho cómo aplicar lo que dice el sitio https://www.authsmtp.com/outlook-2013/alternate-port.html en Perl? Por el puerto tendría que ocupar el 587.

Re: Error SMTP auth()

NotaPublicado: 2015-11-06 13:41 @612
por explorer
En el enlace pone que hay que cambiarlo a mail.authsmtp.com

Y el puerto, el 2525.


Pero... hay otra solución.

1) Hay que tener una cuenta de Office365

2) Instalar en el ordenador el módulo Net::SMTP:TLS

3) Cambiar las partes marcadas con '<=='
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

Re: Error SMTP auth()

NotaPublicado: 2015-11-10 10:36 @484
por audax
Gracias, explorer, siempre tan amable en responder.

La primera parte no me funciona me da error de autenticación (las credenciales que le ingreso son las correctas).
Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
MIME::Lite::SMTP=GLOB(0x5e2d898)<<< 535 5.7.0 authentication failed
SMTP auth() command failed:
5.7.0 authentication failed
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4

La segunda parte tampoco me funcionó: tengo las librerías actualizadas, sobre todo la IO-socket-SSl que indica el error
Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
invalid SSL_version specified at c:/Perl64/site/lib/IO/Socket/SSL.pm line 568.
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4

¿Algún camino de por dónde pueda seguir jugando con esto? Gracias por todo.

Re: Error SMTP auth()

NotaPublicado: 2015-11-10 16:44 @739
por explorer
Cuando empiezan a salir esos errores... empiezo a creer que hay un problema en la instalación de las bibliotecas.

Yo desinstalaría las bibliotecas instaladas a mano, y probaría a instalar las que me ofrece el propio sistema (el gestor de paquetes de tu sistema). Así tendré la garantía de que todas las versiones son compatibles entre sí, pues precisamente eso es lo que indica el último error: que estamos intentando usar una versión SSL diferente de la que IO::Socket::SSL es capaz de manejar.

Hay otra opción mucho mejor y más rápida: no usar Microsoft.

Re: Error SMTP auth()

NotaPublicado: 2016-02-18 13:27 @602
por audax
Después de un tiempo retomé este proyecto y pude hacer funcionar el envío de correo. Cambié las librerías por este código.

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. use Email::Sender::Simple qw(sendmail);
  2. use Email::Sender::Transport::SMTPS;
  3. use Email::Simple ();
  4. use Email::Simple::Creator ();
  5.  
  6. my $smtpserver = 'smtp.office365.com';
  7. my $smtpport = 587;
  8. my $username = '[email protected]';
  9. my $password = "xxxx";
  10.  
  11. my $transport = Email::Sender::Transport::SMTPS->new({
  12.   host => $smtpserver,
  13.   ssl  => 'starttls',
  14.   port => $smtpport,
  15.   sasl_username => $smtpuser,
  16.   sasl_password => $smtppassword,
  17.   debug => 1,
  18. });
  19.  
  20. my $email = Email::Simple->create(
  21.   header => [
  22.     To      => '[email protected]',
  23.     From    => '[email protected]',
  24.     Subject => 'Hi!',
  25.   ],
  26.   body => "This is my message\n",
  27. );
  28.  
  29. sendmail($email, { transport => $transport });
  30.  
  31. 1;
  32.  
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Espero que a alguien le sirva. Y gracias a todos, en especial a explorer, por el tiempo que le dedica a que esto siga adelante.

Salu2.