Cobol Foro

Cobol Foro (https://www.cobolforo.es/index.php)
-   Cocina PowerCOBOL (https://www.cobolforo.es/forumdisplay.php?f=24)
-   -   [PowerCOBOL] Ocx, Dll y ejemplo envío Mail desde PWC (https://www.cobolforo.es/showthread.php?t=722)

Josber 21 de septiembre de 2017 12:21

Ocx, Dll y ejemplo envío Mail desde PWC
 
3 Archivos Adjunto(s)
Aquí os dejo un pequeño programa que he hecho de ejemplo, para poder enviar correos desde PowerCobol, el componente tiene casi todas las opciones necesarias, usuario, contraseña, servidores POP3 y SMTP, envío de adjuntos, exportar a EML, envíos PARA:, CC: CCO:, Puerto, etc.

El componente está probado en Windows 10 x64 y PowerCobol 9, y funciona perfectamente. Para que funcione, hay que registrar el ocx y la dll, con permisos de administrador, o de lo contrario, nos dará error al abrir el proyecto.

- Incluye: ppj, exe, ocx, dll e iconos.
- Versión del Compilador: PWC9, aunque supongo que funcionará en las demás versiones sin problemas.
- Incluye: Documento rtf, con una pequeña descripción de los eventos y propiedades del componente.

Un saludo a todos.-

Celina 13 de marzo de 2021 01:37

@Josber,

Realmente aprecio que compartas, pero tengo un problema, si pones acentos en el cuerpo del mensaje, ¿aparecen con caracteres especiales? ¿Me puedes ayudar? Muchas gracias

Josber 13 de marzo de 2021 19:17

Cita:

Citación del post de Celina (Mensaje 6543)
¿aparecen con caracteres especiales?


No sé si es que lo preguntas porque sí te aparecen caracteres especiales, o es que se te han colado las interrogaciones, a ver, a mí no me aparece nada raro, y sí puedo enviar un texto con acentos, yo más bien pienso en alguna configuración de tu Windows, no sé si a alguien más le pasará, a ver si alguien expone algo.

Es que si no, no sé por donde tirar para ayudarte

Un salu2.-

Celina 19 de marzo de 2021 14:23

1 Archivos Adjunto(s)
Muchas gracias por su respuesta.

Si envío el siguiente texto:

"Isto é um teste. Não consigo enviar palavras com acentos faça as alterações que fizer."

En el correo electrónico el texto enviado es:

“Isto i um teste. Nco consigo enviar palavras com acentos faga as alteragues que fizer.”

en su ayuda se asigna el archivo RTF:

object.Charset As String
Character set used in message (default - "us-ascii")

pero no sé cómo trabajar con él.

MOVE "Text" OF CmEML-ENVIO TO "MailFrom" OF SMTP1
MOVE "ISO-8859-1" TO "Charset" OF SMTP1
MOVE "Text" OF CmUSER TO "Username" OF SMTP1
MOVE "Text" OF CmPASS TO "Password" OF SMTP1
MOVE "Text" OF CmPOP3 TO "POPServer" OF SMTP1
MOVE "Text" OF CmSMTP TO "Server" OF SMTP1
MOVE "Text" OF CmPORTA TO "Port" OF SMTP1
MOVE 2 TO "AuthenticationType" OF SMTP1 *>AUTH LOGIN
MOVE "Text" OF CmASSUNTO TO "MessageSubject" OF SMTP1
MOVE "Text" OF CmMENSAGEM TO "MessageText" OF SMTP1


Puedes ver cómo se ve en la imagen.

Muchas gracias

Joseg 19 de marzo de 2021 15:55

Cita:

Citación del post de Celina (Mensaje 6559)
Muchas gracias por su respuesta.

Si envío el siguiente texto:

"Isto é um teste. Não consigo enviar palavras com acentos faça as alterações que fizer."

En el correo electrónico el texto enviado es:

“Isto i um teste. Nco consigo enviar palavras com acentos faga as alteragues que fizer.”

en su ayuda se asigna el archivo RTF:

object.Charset As String
Character set used in message (default - "us-ascii")

pero no sé cómo trabajar con él.

MOVE "Text" OF CmEML-ENVIO TO "MailFrom" OF SMTP1
MOVE "ISO-8859-1" TO "Charset" OF SMTP1
MOVE "Text" OF CmUSER TO "Username" OF SMTP1
MOVE "Text" OF CmPASS TO "Password" OF SMTP1
MOVE "Text" OF CmPOP3 TO "POPServer" OF SMTP1
MOVE "Text" OF CmSMTP TO "Server" OF SMTP1
MOVE "Text" OF CmPORTA TO "Port" OF SMTP1
MOVE 2 TO "AuthenticationType" OF SMTP1 *>AUTH LOGIN
MOVE "Text" OF CmASSUNTO TO "MessageSubject" OF SMTP1
MOVE "Text" OF CmMENSAGEM TO "MessageText" OF SMTP1


Puedes ver cómo se ve en la imagen.

Muchas gracias



Porque não gosto de usar OCXs de terceiros (é necessário registar em cada posto que o vai usar...),
uso esta ferramenta e funciona muito bem (mas há outras alternativas):

Código COBOL:
  1.           string "SwithMail.exe /s /x swc.xml" delimited by size
  2.               " /to "  delimited by size                 *> para
  3.                wTO delimited by "  "
  4.               into CommandLine
  5.           end-string
  6.  
  7.           IF wCC NOT = SPACES
  8.              STRING CommandLine DELIMITED BY "  "         *> CC  
  9.                 " /CC "  delimited by size
  10.                 wCC  delimited by "  "
  11.                 INTO CommandLine
  12.              end-string
  13.           END-IF
  14.  
  15.           STRING CommandLine DELIMITED BY "  "
  16.               ' /sub "'  delimited by size
  17.               wSUBJECT delimited by "     "     *> assunto
  18.               '"' delimited by size
  19.               INTO  CommandLine
  20.           end-string
  21.  
  22.           STRING CommandLine DELIMITED BY "  "
  23.               ' /b '  delimited by size             *> body
  24.               '"' delimited by size
  25.               wBODY delimited by "                           "
  26.               '"' delimited by size
  27.               into CommandLine
  28.           end-string
  29.  
  30.           IF wATTACH NOT = SPACES      
  31.              STRING CommandLine DELIMITED BY "  "
  32.                 ' /a '  delimited by size
  33.                 '"' delimited by size
  34.                 wATTACH  DELIMITED BY "   "    *> anexo1
  35.                 '"' delimited by size
  36.                 INTO CommandLine
  37.              end-string
  38.           END-IF
  39.           INVOKE pow-self "Execute" USING CommandLine POW-SWHIDE  

Celina 22 de marzo de 2021 13:35

Cita:

Citación del post de Joseg (Mensaje 6560)
Porque não gosto de usar OCXs de terceiros (é necessário registar em cada posto que o vai usar...),
uso esta ferramenta e funciona muito bem (mas há outras alternativas):

Código COBOL:
  1.           string "SwithMail.exe /s /x swc.xml" delimited by size
  2.               " /to "  delimited by size                 *> para
  3.                wTO delimited by "  "
  4.               into CommandLine
  5.           end-string
  6.  
  7.           IF wCC NOT = SPACES
  8.              STRING CommandLine DELIMITED BY "  "         *> CC  
  9.                 " /CC "  delimited by size
  10.                 wCC  delimited by "  "
  11.                 INTO CommandLine
  12.              end-string
  13.           END-IF
  14.  
  15.           STRING CommandLine DELIMITED BY "  "
  16.               ' /sub "'  delimited by size
  17.               wSUBJECT delimited by "     "     *> assunto
  18.               '"' delimited by size
  19.               INTO  CommandLine
  20.           end-string
  21.  
  22.           STRING CommandLine DELIMITED BY "  "
  23.               ' /b '  delimited by size             *> body
  24.               '"' delimited by size
  25.               wBODY delimited by "                           "
  26.               '"' delimited by size
  27.               into CommandLine
  28.           end-string
  29.  
  30.           IF wATTACH NOT = SPACES      
  31.              STRING CommandLine DELIMITED BY "  "
  32.                 ' /a '  delimited by size
  33.                 '"' delimited by size
  34.                 wATTACH  DELIMITED BY "   "    *> anexo1
  35.                 '"' delimited by size
  36.                 INTO CommandLine
  37.              end-string
  38.           END-IF
  39.           INVOKE pow-self "Execute" USING CommandLine POW-SWHIDE  



Muito obrigada pela sua ajuda.
Vou tentar usar esse e se pudesse agradecia que me enviasse um ficheiro exemplo do swc.xml para eu ver a configuração.

Se tiver de anexar vários anexos ao email como ficaria o código?

Mais uma vezes agradeço-lhe imenso a sua ajuda.

Joseg 23 de marzo de 2021 00:05

1 Archivos Adjunto(s)
Cita:

Citación del post de Celina (Mensaje 6571)
Muito obrigada pela sua ajuda.
Vou tentar usar esse e se pudesse agradecia que me enviasse um ficheiro exemplo do swc.xml para eu ver a configuração.

Se tiver de anexar vários anexos ao email como ficaria o código?

Mais uma vezes agradeço-lhe imenso a sua ajuda.


Código COBOL:
  1.   IF wATTACH NOT = SPACES      
  2.              STRING CommandLine DELIMITED BY "  "
  3.                 ' /a '  delimited by size
  4.                 '"' delimited by size
  5.                 wATTACH  DELIMITED BY "   "    *> anexo1
  6.                 '"' delimited by size
  7.                 INTO CommandLine
  8.              end-string
  9.           END-IF
  10.          IF wATTACH2 NOT = SPACES      
  11.              STRING CommandLine DELIMITED BY "  "
  12.                 '|'  delimited by size
  13.                 wATTACH2  DELIMITED BY "   "    *> anexo2
  14.                 '"' delimited by size
  15.                 INTO CommandLine
  16.              end-string
  17.           END-IF

Separar os vários anexos com o separador "|"

O XML é criado automaticamente com a a ferramenta. Ver a imagem,
Mas basicamente é a onde fica registado a configuração da conta de e-mail a usar (user, password, server).

jmeza 25 de marzo de 2021 15:55

Cita:

Citación del post de Josber (Mensaje 3519)
registrar el ocx y la dll

Joseg, disculpa la pregunta, como registro
registrar el ocx y la dll

Joseg 25 de marzo de 2021 15:59

Cita:

Citación del post de jmeza (Mensaje 6585)
Joseg, disculpa la pregunta, como registro
registrar el ocx y la dll

en modo administrador, ejecute: reg.bat

Celina 29 de marzo de 2021 16:16

Cita:

Citación del post de Joseg (Mensaje 6573)
Código COBOL:
  1.   IF wATTACH NOT = SPACES      
  2.              STRING CommandLine DELIMITED BY "  "
  3.                 ' /a '  delimited by size
  4.                 '"' delimited by size
  5.                 wATTACH  DELIMITED BY "   "    *> anexo1
  6.                 '"' delimited by size
  7.                 INTO CommandLine
  8.              end-string
  9.           END-IF
  10.          IF wATTACH2 NOT = SPACES      
  11.              STRING CommandLine DELIMITED BY "  "
  12.                 '|'  delimited by size
  13.                 wATTACH2  DELIMITED BY "   "    *> anexo2
  14.                 '"' delimited by size
  15.                 INTO CommandLine
  16.              end-string
  17.           END-IF

Separar os vários anexos com o separador "|"

O XML é criado automaticamente com a a ferramenta. Ver a imagem,
Mas basicamente é a onde fica registado a configuração da conta de e-mail a usar (user, password, server).


Consegui colocar o envio de emails pelo SwithMail a funcionar, mas agora criei uma lista de envio de emails em série e testei o envio para 4 emails meus e funcionou na perfeição, mas ao enviar para outros deu falha no envio e no ficheiro de Log a mensagem é a seguinte:

"O cliente não tem permissão para enviar correio para este servidor. A resposta do servidor foi: 4.7.1 <[email protected]>: Relay access denied"

Outra dúvida, quantos emails podem ser enviados ao mesmo tempo, ou seja, quantos comandos "INVOKE pow-self Execute USING CommandLine POW-SWHIDE" posso executar ao mesmo tempo?

Agradeço a ajuda dispensada.


La franja horaria es GMT +2. Ahora son las 16:22.

Powered by: vBulletin, Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.