
Mandar un e-mail
En realidad lo que vamos a hacer con este truco que nos ha facilitado un programador amigo llamado
José Mari, es invocar con un CALL, a nuestro programa
de correo electrónico para que nos muestre una ventana para escribir un mensaje nuevo.
El truco va a estar explicado para hacerlo con Outlook Express (OE), pero podréis
hacer lo mismo con cualquier otro, cambiando algunos de los parámetros.
Lo primero que debemos de hacer es averiguar donde se encuentra ubicado el programa
en nuestro disco duro, si utilizamos OE, éste se encontrará en "
C:Archivos de ProgramaOutlook ExpressMsimn.exe".
Una vez tengamos la ruta solo tendremos que hacer un CALL ha dicho lugar, pero
tenemos que tener en cuenta que si lo hacemos desde MS-DOS, para éste
sistema los nombres de archivo o carpetas no pueden tener mas de 8
caracteres, por lo que la ruta completa podría quedar así: "
C:ARCHIV~1OUTLOO~1MSIMN.EXE".
Ahora por último nos queda pasarle los parámetros necesarios, para que en vez de
abrir el programa nos abra solo una ventana con un mensaje nuevo. Esto se consigue
añadiendo lo siguiente: /mailurl:mailto:direccion_de_correo
y si además queremos que el asunto también vaya indicado añadimos
lo siguiente a continuación de la dirección de correo y sin espacios:
?subject=asunto.
Ahora veamos como quedaría nuestro programa, imaginaos por ejemplo en vuestro
programa de mantenimiento de clientes o proveedores que incorporáis una
opción para enviar correo electrónico y que por supuesto tenéis su
dirección electrónica como algún campo de su registro:
...
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL. SELECT
CLIENTES ASSIGN TO RANDOM "clientes.dat"
ORGANIZATION INDEXED ACCESS DYNAMIC
RECORD KEY KEYCLI.
DATA DIVISION.
FILE SECTION.
FD CLIENTES LABEL RECORD STANDARD.
01 REGCLI.
02 KEYCLI.
03
CLICOD PIC 9(4).
02 CLINOM
PIC X(30).
02 CLIDOM
PIC X(30).
02 CLIPOB
PIC X(30).
...
02 CLIMAI
PIC X(30) (correo electrónico)
...
WORKING-STORAGE SECTION.
01 LLAMADA.
02 FILLER PIC X(30) VALUE
"c:archiv~1outloo~1msimn.exe".
02 FILLER PIC X(17) VALUE " /mailurl:mailto:"
02 LLAMAI PIC X(30).
01 OP
PIC X.
...
PROCEDURE DIVISION.
INICIO.
...
...
OPCIONES.
DISPLAY "(M)ANDAR CORREO" LINE 20 COL
10 LOW REVERSE.
ACCEPT OP LINE 20 COL 12 PROMPT.
IF OP = "M" GO MANDARCORREO.
...
...
MANDARCORREO.
MOVE CLIMAI TO LLAMAI.
CALL "SYSTEM" USING LLAMADA.
...
Para mandarme un mensaje a mi, por ejemplo podemos hacerlo mas fácil:
CALL "SYSTEM"
USING "C:ARCHIV~1OUTLOO~1MSIMN.EXE
/mailurl:mailto:andres@escobol.com?subject=Hola Andres".
Fijaros de que manera mas fácil podemos hacer que nuestro programa
sea un ciberprograma.
Carlos, ha descubierto un poco mas sobre la instrucción
y ahora podemos añadirte también el
cuerpo del mensaje, unicament insertando &body=cuerpo_del_mensaje
justo después del subject, sin dejar espacios.
A próposito de éste tema, nuestro amigo
Muñoz, S. nos propone un programita para enviar
mail's entre usuarios de Unix / Linux.
identification division. program-id. Mail. environment division. configuration section. special-names.
decimal-point is comma. input-output section. data division. working-storage section. 01 parametros pic
x(250). 01 string-mail. 02 filler pic x(09) value "mailx -s
". 02 filler pic
x(01) value '"'. 02 asunto pic x(30) value spaces.
02 filler pic x(02) value '" '.
02 usuario pic x(30) value spaces.
02 filler pic x(03) value " < ".
02 mensaje pic x(47) value spaces.
02 filler pic x(12) value " >
/dev/null". procedure division. parrafo-principal. accept parametros
from command-line unstring
parametros delimited by ","
into asunto, usuario, mensaje. display
string-mail call "system"
using string-mail stop
run.
|
Donde: mailx es el comando de Unix/Linux que envia los mail.
Los parámetros de entrada al programa en este caso deben estar separados por coma (,).
|
|