• Publicidad

Cómo enviar email con Microsoft Outllook desde script Perl

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

Cómo enviar email con Microsoft Outllook desde script Perl

Notapor Txemaracas » 2011-09-14 17:20 @764

Hola. He pensado una cosa y quería saber vuestra opinión. Me dijeron que sí podría interactuar con Outlook porque lo usan mucho con lo cual, mirando un poco en Google, he pensado que podría abrir el programa de Microsoft Outlook desde mi programa en Perl y desde ahí mandar el fichero generado por el programa. Quería saber vuestra opinión sobre usar:


Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1.      # create the object
  2.       use Mail::Outlook;
  3.       my $outlook = new Mail::Outlook();
  4.      
  5.     # use the Win32::OLE::Const definitions
  6.       use Mail::Outlook;
  7.       use Win32::OLE::Const 'Microsoft Outlook';
  8.      
  9.      # create a message for sending
  10.       my $message = $outlook->create();
  11.       $message->To('[email protected]');
  12.       $message->Cc('Them <[email protected]>');
  13.       $message->Bcc('Us <[email protected]>; [email protected]');
  14.       $message->Subject('Blah Blah Blah');
  15.       $message->Body('Yadda Yadda Yadda');
  16.       $message->Attach(@lots_of_files);
  17.       $message->Attach(@more_files);    # attachments are appended
  18.       $message->Attach($one_file);      # so multiple calls are allowed
  19.       $message->send;
  20.      
  21.       # Or use a hash
  22.       my %hash = (
  23.          To      => '[email protected]',
  24.          Cc      => 'Them <[email protected]>',
  25.          Bcc     => 'Us <[email protected]>, [email protected]',
  26.          Subject => 'Blah Blah Blah',
  27.          Body    => 'Yadda Yadda Yadda',
  28.       );
  29.      
  30.       my $message = $outlook->create(%hash);
  31.       $message->display(%hash);
  32.       $message->send(%hash);
Coloreado en 0.004 segundos, usando GeSHi 1.0.8.4



Lo que quiero que haga el programa, y como no sé si podría hacerlo por eso os pregunto, es que desde mi programa en Perl pasarle los contactos que tengo en la base de datos a Outlook junto con el archivo .pdf o lo que sea que deseo enviar. ¿El programa de Outlook se iniciará al ejecutar el script o debería poner algún comando para iniciarlo como hace explorer en el tutorial del robot para iniciar Internet explorer (StartIE();)? ¿Le pasará los contactos a Outlook o debería tenerlos metidos en Outlook?
Txemaracas
Perlero nuevo
Perlero nuevo
 
Mensajes: 136
Registrado: 2011-04-04 10:06 @462

Publicidad

Re: Cómo enviar email con Microsoft Outllook desde script Perl

Notapor explorer » 2011-09-14 17:33 @772

Yo hace años que dejé de usar Windows, pero viendo este código, se ve que está mostrando dos formas distintas de enviar correos con el Outlook. Y en ninguna de las dos hace referencia a la lista de contactos de Outlook.

Tienes que indicar los destinatarios de forma directa, en los campos TO, Cc y Bcc, según quieras que sean visibles o no.

Vamos, el comportamiento es igual que en el resto de módulos para enviar correos desde Perl.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Cómo enviar email con Microsoft Outllook desde script Perl

Notapor Txemaracas » 2011-09-14 17:56 @789

No si lo de los contactos quiero que se envíen o se carguen como quieras decirlo, desde el programa en Perl puesto que los tengo metidos en base de datos. Lo que tengo dudas es si se abrirá el programa Outlook cuando se ejecute el programa y la otra duda es cómo enviar el archivo Pdf o word, dónde he de poner el path donde se encuentra el archivo.
Txemaracas
Perlero nuevo
Perlero nuevo
 
Mensajes: 136
Registrado: 2011-04-04 10:06 @462

Re: Cómo enviar email con Microsoft Outllook desde script Perl

Notapor explorer » 2011-09-14 18:02 @793

Como se trata del protocolo OLE, es muy posible que el programa arranque el Outlook por sí mismo. Y para los adjuntos, pues supongo que será con el método Attach().

Es cuestión de probar.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Cómo enviar email con Microsoft Outllook desde script Perl

Notapor Txemaracas » 2011-10-09 14:36 @650

Hola, quería que me dijerais cómo puedo agregar los contactos que he seleccionado en donde pone "To:". Cuando se lo envío solo a una persona funciona pero ahora quiero que se envíe a los que tengo en el array @mis_contactos. ¿Como he de hacerlo porque no me funciona de esta manera?



Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. my $outlook = new Mail::Outlook();
  2.      
  3.       # use the Win32::OLE::Const definitions
  4.       # use Win32::OLE::Const 'Microsoft Outlook';
  5.      
  6.       # Variables
  7.       my @mis_correos  =  &devolverCorreos();
  8.      
  9.       if (@mis_correos){
  10.          
  11.             for my $correo (@mis_correos) {
  12.                
  13.                 $correo=~ s/\s//g;
  14.        
  15.                 print "El correo es:",$correo."\n";
  16.        
  17.             }
  18.       }
  19.      
  20.      
  21.       my ($tema, $contenido, $field);
  22.      
  23.       $tema = $ventanaEN->TextFieldne->Text();
  24.       $contenido = $ventanaEN->TextFieldne2->Text();
  25.       $field = $ventanaEN->TextFieldne3->Text();  # direccion del fichero
  26.      
  27.       print "El tema es:",$tema,"\n";
  28.       print "El mensage es:",$contenido,"\n";
  29.       print "El fichero es:",$field,"\n";
  30.      
  31.  
  32.       #create a message for sending
  33.       my $message = $outlook->create();
  34.       $message->To(@mis_correos);
  35.       #$message->Cc('');
  36.       #$message->Bcc('');
  37.       $message->Subject($tema);
  38.       $message->Body($contenido);
  39.       $message->Attach($field);
  40.       $message->send;
  41.      
  42.       return 0;
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4
Txemaracas
Perlero nuevo
Perlero nuevo
 
Mensajes: 136
Registrado: 2011-04-04 10:06 @462

Re: Cómo enviar email con Microsoft Outllook desde script Perl

Notapor explorer » 2011-10-09 14:44 @655

En la sinopsis del módulo hay un ejemplo para el método Bcc: se hace separando las direcciones con el carácter ';'.

Entonces, quedaría así (no probado):

$message->To(join '; ', @mis_correos);
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Cómo enviar email con Microsoft Outllook desde script Perl

Notapor Txemaracas » 2011-11-30 12:20 @555

¿Hay alguna manera de saber si el email se ha enviado correctamente? Algo que te diga "El mensaje se ha enviado correctamente".
Txemaracas
Perlero nuevo
Perlero nuevo
 
Mensajes: 136
Registrado: 2011-04-04 10:06 @462

Re: Cómo enviar email con Microsoft Outllook desde script Perl

Notapor explorer » 2011-11-30 12:31 @563

Eso depende un poco de tu servidor de correo.

Que no se envíe un correo puede depende de varios factores:
  • cortafuegos, antivirus, filtros antispam, que capturan el correo, tanto en el emisor, como dentro del servidor de correo, como en el ordenador del receptor
  • la dirección de emisor no es correcta. En este caso, algunos servidores de correo devuelven inmediatamente un código de error. En otros, solo te enteras cuando recibas un correo automático de error por parte del servidor de correo
  • el buzón de receptor no acepta más correos
  • el servidor de correo del receptor no admite nuestros correos (porque estamos en una lista negra (o nuestro servidor), o no nos conoce (por lo que nos meterá en una grey list), etc)
  • cien fallos físicos más (inundaciones, cortes de luz, etc)
En muchos casos, el servidor de correo no te dirá nada. Recibirá tu petición de envío de un correo y lo pasará a la cola de envío de correos. Pasados unas centésimas de segundo (o minutos), intentará enviarlo. Si ocurre algún fallo, creará un correo automático y nos lo mandará a nuestro buzón. Dependiendo de la gravedad, se rendirá o lo intentará de nuevo cada 10 minutos, durante 5 días más (esa es la configuración de mi servidor de correo).
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España


Volver a Básico

¿Quién está conectado?

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

cron