El problema es el siguiente: estás pidiendo al programa que use el servidor de correo de Gmail para enviar el correo. Y el primer mensaje de error dice que eso requiere que te autentifiques (indicar el nombre de usuario y contraseña de tu cuenta de acceso a Gmail) en ese servidor de correo. Además, la autenticación debe hacerse con el formato STARTTLS. Y
MIME::Lite no sabe nada de eso...
Entonces... si quieres enviar un correo electrónico usando el servidor de correo de Gmail, deberás usar otro método distinto, como el que comentamos
en este otro hilo.
Otra opción: no utilizar el servidor de correo de Gmail... e intentar enviar el correo directamente.
Y aquí aparece otro problema... La mayor parte de los servidores de correo (el de tu destinatario) no admitirán correo según desde donde estés enviando el correo. Si estás en una línea residencial es muy posible que te lo bloqueen.
Si abro la página de manual de MIME::Lite, aparte del mensaje que dice que este módulo no es nada recomendable, hay un ejemplo para enviar un mensaje de solo texto. Lo copio y lo pego a otro archivo de texto y lo convierto en un programa:
Using perl Syntax Highlighting
#!/usr/bin/perl
use MIME::Lite;
my $msg = MIME::Lite->new(
Subject =>'Correo de prueba',
Data =>"Texto del mensaje"
);
$msg->send();
Coloreado en 0.002 segundos, usando
GeSHi 1.0.8.4
Así, sin indicar nada en send(), MIME::Lite usará el sistema de transporte de correo del sistema. En mi máquina, tengo instalado el postfix, así que MIME::Lite le llama y le pide que envíe el correo. Eso lo vemos en el archivo /var/log/mail.log:
Using text Syntax Highlighting
Jan 31 12:41:17 joaquinferrero postfix/pickup[18403]: 9D8DB23344: uid=1000 from=<explorer>
Jan 31 12:41:20 joaquinferrero postfix/cleanup[24832]: 9D8DB23344: message-id=<
[email protected]>
Jan 31 12:41:20 joaquinferrero postfix/qmgr[1551]: 9D8DB23344: from=<
[email protected]>, size=509, nrcpt=1 (queue active)
Jan 31 12:41:29 joaquinferrero postfix/smtp[24840]: certificate verification failed for correo.jf.com.es[82.193.86.160]:25: untrusted issuer /C=ES/ST=Valladolid/L=Valladolid/O=AiA/CN=*/
[email protected]
Jan 31 12:41:30 joaquinferrero postfix/smtp[24840]: 9D8DB23344: to=<
[email protected]>, relay=correo.jf.com.es[82.194.86.160]:25, delay=13, delays=1.4/1.6/9.7/0.66, dsn=2.0.0, status=sent (250 OK id=1U0sWI-0006JY-Aw)
Jan 31 12:41:30 joaquinferrero postfix/qmgr[1551]: 9D8DB23344: removed
Coloreado en 0.000 segundos, usando
GeSHi 1.0.8.4
Las líneas indican que sí lo ha enviado, pero esto es posible porque Postfix sabe a qué servidor de correo debe conectarse, y con qué nombre de usuario y contraseña debe utilizar para poder enviarlo.
Así que estamos en las mismas: si quiero usar el método send() de MIME::Lite y no tengo configurado un sistema de transporte local en el sistema, debo indicarlo en los argumentos de send().
Así que tu problema se reduce a encontrar un servidor de correo en donde tengas una cuenta (nombre de usuario y contraseña) que te permita enviar correos. Si solo tienes el de Gmail, pues vuelve a leer los primeros párrafos.
Si, por ejemplo, modifico la línea send() con mis datos de autenticación de mi cuenta en Gmail:
Using perl Syntax Highlighting
$msg->send('smtp', 'smtp.gmail.com',
Timeout => 60,
Debug => 1,
AuthPass => '?&r/sh08'
);
Coloreado en 0.001 segundos, usando
GeSHi 1.0.8.4
entonces sale el mensaje de error que comentas: SMTP auth() command not supported on smtp.gmail.com
Eso es porque MIME::Lite no sabe nada de autentificarse con STARTTLS. Hay que usar otro módulo.