• Publicidad

Utilizar DzSoft Perl Editor

¿Apenas comienzas con Perl? En este foro podrás encontrar y hacer preguntas básicas de Perl con respuestas aptas a tu nivel.

Notapor explorer » 2007-02-06 14:11 @633

Se me ocurre que lo estamos liando más de lo necesario.

Lo que realmente quieres es enviar un correo desde tu máquina.

Entonces... no es necesario pedir la intervención de un servidor de correo para que nos mande nuestro correo al servidor de correo del destinatario. Podemos ser nosotros mismos los que enviemos el correo al destinatario.

He instalado el módulo Email::Send, que a su vez me ha pedido instalar los módulos Return::Value, Email::Simple y Email::Address (Net::SMTP ya estaba instalado).

Con el siguiente código:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
#!/usr/bin/perl
use strict;
use warnings;

use Email::Send;

my $sender = Email::Send->new({ mailer => 'SMTP' });
$sender->mailer_args([Host => 'a.mx.mail.yahoo.com', Debug => 1]);

my $email = Email::Simple->new("");
$email->header_set("From", '[email protected]');
$email->header_set("To", '[email protected]');
$email->body_set("Hello world\nSimon");

$sender->send($email);
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4
Se ha conectado y enviado el correo:
Código: Seleccionar todo
explorer@next3:~/Documents/Perl/desarrollo> ./kk.pl
Net::SMTP>>> Net::SMTP(2.29)
Net::SMTP>>>   Net::Cmd(2.26)
Net::SMTP>>>     Exporter(5.58)
Net::SMTP>>>   IO::Socket::INET(1.28)
Net::SMTP>>>     IO::Socket(1.28)
Net::SMTP>>>       IO::Handle(1.24)
Net::SMTP=GLOB(0x844678c)<<< 220 mta545.mail.mud.yahoo.com ESMTP YSmtp service ready
Net::SMTP=GLOB(0x844678c)>>> EHLO localhost.localdomain
Net::SMTP=GLOB(0x844678c)<<< 250-mta545.mail.mud.yahoo.com
Net::SMTP=GLOB(0x844678c)<<< 250-8BITMIME
Net::SMTP=GLOB(0x844678c)<<< 250-SIZE 31981568
Net::SMTP=GLOB(0x844678c)<<< 250 PIPELINING
Net::SMTP=GLOB(0x844678c)>>> MAIL FROM:<[email protected]>
Net::SMTP=GLOB(0x844678c)<<< 250 sender <[email protected]> ok
Net::SMTP=GLOB(0x844678c)>>> RCPT TO:<[email protected]>
Net::SMTP=GLOB(0x844678c)<<< 250 recipient <[email protected]> ok
Net::SMTP=GLOB(0x844678c)>>> DATA
Net::SMTP=GLOB(0x844678c)<<< 354 go ahead
Net::SMTP=GLOB(0x844678c)>>> From: [email protected]
Net::SMTP=GLOB(0x844678c)>>> To: [email protected]
Net::SMTP=GLOB(0x844678c)>>>
Net::SMTP=GLOB(0x844678c)>>> Hello world
Net::SMTP=GLOB(0x844678c)>>> Simon
Net::SMTP=GLOB(0x844678c)>>> .
Net::SMTP=GLOB(0x844678c)<<< 250 ok dirdel

Fíjate que en vez de conectarme a smtp.mail.yahoo.com.mx, lo he hecho a otro servidor de correo que sí admite correo externo.

(Las direcciones de correo están modificadas para evitar a los robots de spam. Deberías hacer lo mismo en tus mensajes anteriores).
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14486
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Publicidad

Notapor programador_novato » 2007-02-07 00:24 @058

Hola pues nuevamente gracias, instale los módulos que me pusiste, trate de correr el código que me pusiste, pero me sigue apareciendo el mismo error:

En la linea de direcciones lo que escribo es:
http://localhost/cgi-bin/mm.cgi

Código: Seleccionar todo
Internal Server Error
The server encountered an internal error or misconfiguration and was unable to complete your request.

Please contact the server administrator, [email protected] and inform them of the time the error occurred, and anything you might have done that may have caused the error.

More information about this error may be available in the server error log.


--------------------------------------------------------------------------------

Apache/2.0.55 (Win32) Server at localhost Port 80



En el código que me pusiste lo que deje fue lo siguiente:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
#!/usr/bin/perl
use strict;
use warnings;

use Email::Send;

my $sender = Email::Send->new({ mailer => 'SMTP' });
$sender->mailer_args([Host => 'a.mx.mail.yahoo.com', Debug => 1]);

my $email = Email::Simple->new("");
$email->header_set("From", '[email protected]');
$email->header_set("To", '[email protected]');
$email->body_set("Hello world\nSimon");

$sender->send($email);
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Supongo tengo algo mal, o supongo es porque lo sigo intentando con correo de hotmail, pero no encontré alguno que me deje enviarlo como cuenta gratuita, por favor espero me puedas ayudar con mi código, me puedas dar los pasos que tengo que seguir, qué tengo que modificar, si estoy poniendo mal la dirección y algún servidor de correo como el que necesito.

Espero no molestar o pedir demasiado, pero como te habrás dado cuenta he intentado lo que puedo, pero soy muy novato en esto y se poco, ya he ido aprendiendo gracias a su ayuda, pero me falta mucho. Espero respuesta y guía y agradezco mucho la ayuda y atención.
programador_novato
Perlero nuevo
Perlero nuevo
 
Mensajes: 12
Registrado: 2007-01-28 06:17 @303

Notapor explorer » 2007-02-07 04:16 @219

Te falla porque NO es un cgi lo que te he dejado.

Para ejecutar un código Perl en tu Windows, abre una ventana de línea de comandos, colócate en el directorio donde está el script Perl y escribe:

Código: Seleccionar todo
perl mm.cgi


¿O realmente necesitas ejecutar el script Perl como si fuera un cgi?
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14486
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Notapor kidd » 2007-02-07 11:24 @516

En todo caso si lo quieres ejecutar como un cgi pon al final las siguiente líneas:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
print "Content-type: text/html\n\n";
print "Script Terminado";
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4



Saludos
Uriel Lizama Perl programmer fundador de Perl en Español
Perl Programming Language
Avatar de Usuario
kidd
Creador de Perl en Español
Creador de Perl en Español
 
Mensajes: 1166
Registrado: 2003-10-15 16:52 @744
Ubicación: México

Notapor programador_novato » 2007-02-07 12:15 @552

Ya revise y ejecute el codigo desde linea de comandos, pero me aparece lo siguiente y hasta alli se queda:

Código: Seleccionar todo
C:\Archivos de programa\Zend\Apache2\cgi-bin>perl mm.cgi
Net::SMTP>>> Net::SMTP(2.26)
Net::SMTP>>>   Net::Cmd(2.24)
Net::SMTP>>>     Exporter(5.57)
Net::SMTP>>>   IO::Socket::INET(1.27)
Net::SMTP>>>     IO::Socket(1.28)
Net::SMTP>>>       IO::Handle(1.23)
Net::SMTP: Unexpected EOF on command channel at C:/Perl/site/lib/Email/Send/SMTP
.pm line 42


¿Podrian decirme a que se debe esto o como lo puedo corregir?
programador_novato
Perlero nuevo
Perlero nuevo
 
Mensajes: 12
Registrado: 2007-01-28 06:17 @303

Notapor explorer » 2007-02-07 12:39 @569

Parece que el error dice que no ha podido enviar ningún comando SMTP al servidor de correo.

Yo lo que haría sería, desde la línea de comandos, ejecutar:
Código: Seleccionar todo
telnet a.mx.mail.yahoo.com 25

y ver qué pasa. Si el servidor no responde, es que tu ordenador o tu red privada tiene algún filtro que impide la conexión. Haz antes un
Código: Seleccionar todo
ping a.mx.mail.yahoo.com
para comprobar que efectivamente tienes conexión al servidor de correo.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14486
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Notapor kidd » 2007-02-07 12:48 @575

Intenté el código de explorer y me jala sin errores, el único problema es que Yahoo! me regresó un error pues evitó que use su servidor como un relay server como lo había comentado antes.

Me parece que solamente te funcionará si mandas email de un deirección yahoo.com.mx a una dirección yahoo.com.mx.


Saludos
Uriel Lizama Perl programmer fundador de Perl en Español
Perl Programming Language
Avatar de Usuario
kidd
Creador de Perl en Español
Creador de Perl en Español
 
Mensajes: 1166
Registrado: 2003-10-15 16:52 @744
Ubicación: México

Notapor programador_novato » 2007-02-07 21:43 @947

Hola y Gracias nuevamente, utilize las lineas de codigo anteriores y las ejecute, pero al correr el programa me aparece ahora lo siguiente:

Código: Seleccionar todo
C:\Archivos de programa\Zend\Apache2\cgi-bin>perl mm.cgi
Net::SMTP>>> Net::SMTP(2.26)
Net::SMTP>>>   Net::Cmd(2.24)
Net::SMTP>>>     Exporter(5.57)
Net::SMTP>>>   IO::Socket::INET(1.27)
Net::SMTP>>>     IO::Socket(1.28)
Net::SMTP>>>       IO::Handle(1.23)
Net::SMTP=GLOB(0x1aba674)<<< 220 smtp107.mail.mud.yahoo.com ESMTP
Net::SMTP=GLOB(0x1aba674)>>> EHLO localhost.localdomain
Net::SMTP=GLOB(0x1aba674)<<< 250-smtp107.mail.mud.yahoo.com
Net::SMTP=GLOB(0x1aba674)<<< 250-AUTH LOGIN PLAIN XYMCOOKIE
Net::SMTP=GLOB(0x1aba674)<<< 250-PIPELINING
Net::SMTP=GLOB(0x1aba674)<<< 250 8BITMIME
Net::SMTP=GLOB(0x1aba674)>>> MAIL FROM:<[email protected]>
Net::SMTP=GLOB(0x1aba674)<<< 530 authentication required - for help go to http:/
/help.yahoo.com/help/us/mail/pop/pop-11.html
Content-type: text/html

Script Terminado
C:\Archivos de programa\Zend\Apache2\cgi-bin>


¿Esta mal mi script cgi?


Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
#!C:\perl\bin\perl.exe-w
use strict;
use warnings;

use Email::Send;

my $sender = Email::Send->new({ mailer => 'SMTP' });
$sender->mailer_args([Host => 'smtp.mail.yahoo.com.mx', Debug => 1]);

my $email = Email::Simple->new("");
$email->header_set("From", '[email protected]');
$email->header_set("To", '[email protected]');
$email->body_set("Hello world\nSimon");

$sender->send($email);

print "Content-type: text/html\n\n";
print "Script Terminado";
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4



Me pueden decir ahora que hago???????
Ya estoy desesperado, solo quiero enviar un e-mail desde mi máquina, en un principio pense que esto era mas facil, pero no se si sea porque me falta mucho por practicar y aprender, porque de por si cuesta trabajo o por ambas cosas, por favor ayudenme, no quiero dejar esto a un lado sin terminarlo, espero sus respuestas y Gracias.
programador_novato
Perlero nuevo
Perlero nuevo
 
Mensajes: 12
Registrado: 2007-01-28 06:17 @303

Notapor programador_novato » 2007-02-08 00:52 @078

Por ultimo una cosa mas, espero no molestar ni pedir demasiado jeje, podrian decirme como podria unirlo con HTML para que quedara en una sola página? He leido los tutoriales que se encuentran en este portal, pero no encuentro como unir el codigo con HTML...aparte de lo principal, que es enviar el e-mail.

Bien pues espero algun consejo, guía y respuesta para mi problema. Nuevamente Gracias y hasta pronto.
programador_novato
Perlero nuevo
Perlero nuevo
 
Mensajes: 12
Registrado: 2007-01-28 06:17 @303

Notapor kidd » 2007-02-08 01:13 @092

Hola:

Muy bien, ya lo he puesto varias veces, pero ahí va de nuevo.

Ya te está jalando todo bien, los módulos los tienes ya instalados y estás haciendo la conexión al smtp de Yahoo correctamente. Pero Yahoo te está respondiendo con que necesitas identificarte. Ahí viene la segunda parte del problema.

Según Yahoo no vas a poder usar su SMTP ni su POP a menos de que tengas una cuenta Yahoo! Plus.

Sé que a explorer le jaló su ejemplo, aún no entiendo por qué, incluso Yahoo! en sus páginas de ayuda dice que no permiten el relay a menos que tengas una cuenta pagada con ella. Yo hice la prueba con mi cuenta de Yahoo y tampoco me dejó enviarlo, me dió el mismo error.

¿Mi recomendación?

Lo más seguro es que puedas usar el servidor SMTP de tu ISP para enviar tus correos. Pregúntale a tu ISP cual es el servidor y usa ese, si no, consigue algún servidor que te permite relay de correo para hacer tus pruebas.

Ahora, checa los siguiente tutoriales que te muestra una base de lo que es CGI y como hacer output en HTML:
http://perlenespanol.com/tutoriales/cgi ... pasos.html
http://perlenespanol.com/tutoriales/cgi ... te_ii.html
http://perlenespanol.com/tutoriales/htm ... _html.html


Saludos
Uriel Lizama Perl programmer fundador de Perl en Español
Perl Programming Language
Avatar de Usuario
kidd
Creador de Perl en Español
Creador de Perl en Español
 
Mensajes: 1166
Registrado: 2003-10-15 16:52 @744
Ubicación: México

AnteriorSiguiente

Volver a Básico

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 0 invitados