Iniciar Sesión

Ver la Versión Completa : [Duda] Envío email desde powercobol


lumalma
16 de agosto de 2021, 13:30
Buenos días

Desde un programa powercobol tengo que enviar un email a una lista de personas.
El proceso q seguir es el siguiente:
1.- Al usuario se le ofrece una lista de personas a las que puede enviarles un email. El email llevará un documento adjunto que es distinto para cada persona
2.- El usuario elige una persona y se debe abrir el gestor de correo (en este caso Outlook) y se le pase la dirección de email, el asunto y el documento que debe enviar. Podría pasarse también el cuerpo del mensaje.

He visto en el foro de Acucobol en un post antiguo este código que escribió Joseg y creo que es lo que necesito. Joseg lo que hace es crear un fichero line sequential mediante este código:

move spaces to regsm
MOVE "Dim o" to regsm
WRITE regsm
*-----------------------------------------------------------------------------
move spaces to regsm
MOVE "Dim m" to regsm
WRITE regsm
*-----------------------------------------------------------------------------
move spaces to regsm
MOVE 'Set o = CreateObject("Outlook.Application")' to regsm
WRITE regsm
*-----------------------------------------------------------------------------
move spaces to regsm
MOVE 'Set m = o.CreateItem(0)' to regsm
WRITE regsm
*-----------------------------------------------------------------------------
move spaces to regsm
STRING "m.to = " DELIMITED BY SIZE
'"' DELIMITED BY SIZE
pmail DELIMITED BY ' ' *> EMAIL
'"' DELIMITED BY SIZE
INTO regsm
WRITE regsm
*-----------------------------------------------------------------------------
move spaces to regsm
MOVE spaces TO pcc *> CC
IF pcc NOT = " "
STRING "m.Cc = " DELIMITED BY SIZE
'"' DELIMITED BY SIZE
pcc DELIMITED BY ' '
'"' DELIMITED BY SIZE
INTO regsm
WRITE regsm
END-IF
*-----------------------------------------------------------------------------
move spaces to regsm
MOVE spaces TO pbcc *> BCC
IF pbcc NOT = " "
STRING "m.Bcc = " DELIMITED BY SIZE
'"' DELIMITED BY SIZE
pbcc DELIMITED BY ' '
'"' DELIMITED BY SIZE
INTO regsm
WRITE regsm
END-IF
*-----------------------------------------------------------------------------
move spaces to regsm
STRING "m.Subject = " DELIMITED BY SIZE
'"' DELIMITED BY SIZE
passunto DELIMITED BY ' ' *> assunto
'"' DELIMITED BY SIZE
INTO regsm
WRITE regsm
*-----------------------------------------------------------------------------
move spaces to regsm
MOVE "m.Display" to regsm
WRITE regsm

*-----------------------------------------------------------------------------

move spaces to regsm

STRING "m.HTMLBody = " DELIMITED BY SIZE
'"' DELIMITED BY SIZE
pbody DELIMITED BY ' ' *> body
'" & "<br>" & m.HTMLBody ' DELIMITED BY SIZE
INTO regsm
WRITE regsm
*-----------------------------------------------------------------------------
move spaces to regsm
*> Attachments
STRING "m.Attachments.Add " DELIMITED BY SIZE
'"' DELIMITED BY SIZE
pAttachments DELIMITED BY ' ' *> anexos
'"' DELIMITED BY SIZE
INTO regsm
WRITE regsm
*-----------------------------------------------------------------------------
move spaces to regsm
MOVE "m.Display" to regsm
WRITE regsm

*-----------------------------------------------------------------------------
move spaces to regsm
MOVE "m.Send" TO regsm
WRITE regsm

Supongo que está incluido el envío pero yo no lo necesito ya que el usuario debe comprobar y adaptar cada email por lo que el envío no lo tendré en cuenta.
Una vez creado el fichero line sequential la cuestión es como utilizarlo, es decir, como abrir el fichero y que se ejecute las instrucciones y se abra el Outlook para que el usuario envíe cada email.

Gracias

Un saludo

Joseg
16 de agosto de 2021, 20:21
Criar um ficheiro com a extensão .VBS
Exemplo: sendmail.vbs (visual basic script)

Este comando envia automaticamente:
MOVE "m.Send" TO regsm

Se for para abrir o outlook e envio manual NÃO incluir a linha anterior.

Para executar o sendmail.VBS ver no Acucobol como executar uma "commandline" ou usar este pequeno utilitário :
NirCmd - Windows command line tool (https://www.nirsoft.net/utils/nircmd.html)

nircmdc shexec open sendmail.vbs

lumalma
23 de septiembre de 2021, 18:19
Buenas tardes @Joseg,

Después de un tiempo en el que no he estado activo y sin aparecer por el foro por una serie de circunstancias escribo para agradecerte tu ayuda.

He vuelto a coger el asunto por el cual comencé este post y he conseguido abrir Outlook siguiendo tus indicaciones y poder así enviar emails desde un programa powercobol.

Muchas gracias

Un saludo

LEO-SANLUIS
13 de abril de 2025, 05:09
Buenas noches colegas:
Estoy utilizando el programa SwithMail.exe para modificar mis sistemas en powercobol3 y enviar emails.
Es una maravilla como funciona, el ùnico problema que tengo es que solamente puedo ejecutarlo desde un archivo bat, que tiene este contenido: SwithMail.exe /s /x "C:\SISTEMA\SwithMailSettings.xml" .
Si lo ejecuto desde el simbolo del sistema o desde el explorador de archivos, funciona perfecto.
Si lo quiero llamar desde dentro del powercobol3 con la llamada al systema, no da ningún error pero no lo ejecuta.
Uso este pequeño programa para llamarlo.

IDENTIFICATION DIVISION.
PROGRAM-ID. "LLAMO" COMMON.
ENVIRONMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 COMANDOS PIC X(256).
77 I PIC 9 VALUE ZEROS.
PROCEDURE DIVISION.
INICIO.
MOVE "C:\SISTEMA\SwithMail.exe /s/x SwithMailSettings.xml" TO COMANDOS.
CALL EXECAPL OF GESTOR USING COMANDOS POW-SWSHOWMAXIMIZED. .
CALL CLOSESHEET OF GESTOR.

END PROGRAM "LLAMO".

Estuve probando y el inconveniente son los caracteres que van luego del .exe, es decir /s/x
Tienen alguna idea de como llamar al sistema de otra forma, porque utilizando un bat sucede lo mismo, y debo usarlo con la sentencia completa con /s/x
Muchas gracias
Saludos a todos


Usa el resalto de sintaxis: https://www.cobolforo.es/imagenes/cobolforo_syntax_highlite.png