boa Tarde Se alguem puder me ajudar, existe algum meio de anexar arquivo, com linha de codigo? Preciso enviar um email com anexo, o codigo para enviar e-mail estou utilizando um que peguei aqui mesmo no 4each. Outra duvida estou usando o codigo, engraçado que ele so funciona em uma maquina rede. Nas demais maquinas ate em servidores nao é enviado o email, o codigo e executado sem erro... mas o email nao chega em minha caixa de entrada. So qdo envio apartir de minha maquina mesmo, consigo enviar para outras pessoas. Mas em outra maquina nao envia o email. O q seria necessario para este codigo funcionar em qualquer maquina? Estou usando deste codigo. Código: DEFINE var vFrom AS CHARACTER no-undo initial "xxx@xxxxxxxx.com.br". DEFINE var vTo AS CHARACTER no-undo initial "xxxx@xxxx.com.br". DEFINE var vSubject AS CHARACTER no-undo initial "teste de e-mail". DEFINE var vBody AS CHARACTER no-undo initial "teste de e-mail, é apenas um teste...". DEFINE var l-ok AS LOGICAL NO-UNDO. DEFINE VARIABLE vSmtpServer AS CHARACTER NO-UNDO INITIAL "mail.tortuga.com.br". DEFINE VARIABLE vdebugmode AS LOGICAL NO-UNDO. DEFINE VARIABLE vToAux AS CHARACTER NO-UNDO. DEFINE VARIABLE iCont AS INTEGER NO-UNDO. DEFINE VARIABLE vbuffer AS MEMPTR NO-UNDO. DEFINE VARIABLE hSocket AS HANDLE NO-UNDO. DEFINE VARIABLE vstatus AS LOGICAL NO-UNDO. DEFINE VARIABLE vState AS INTEGER NO-UNDO. /* Status: 0 - No Connection to the server 1 - Waiting for 220 connection to SMTP server 2 - Waiting for 250 OK status to start sending email 3 - Waiting for 250 OK status for sender 4 - Waiting for 250 OK status for recipient 5 - Waiting for 354 OK status to send data 6 - Waiting for 250 OK status for message received 7 - Quiting */ FIND FIRST param-global NO-LOCK NO-ERROR. IF AVAIL param-global THEN vSmtpServer = param-global.serv-mail. ASSIGN vToAux = vTo vToAux = REPLACE(vToAux,',',';'). DO iCont = 1 TO NUM-ENTRIES(vToAux,';'): vTo = ENTRY(iCont,vToAux,';'). RUN sendmail. END. PROCEDURE cleanup: hSocket:DISCONNECT() NO-ERROR. DELETE OBJECT hSocket NO-ERROR. END. PROCEDURE sendmail: CREATE SOCKET hSocket. hSocket:SET-READ-RESPONSE-PROCEDURE("readHandler", THIS-PROCEDURE). vstatus = hSocket:CONNECT("-S 25 -H " + vSmtpServer) NO-ERROR. IF NOT vstatus THEN DO: /*MESSAGE "Server is unavailable". */ RETURN. END. vstate = 1. REPEAT ON STOP UNDO, LEAVE ON QUIT UNDO, LEAVE: IF vstate < 0 OR vstate = 7 THEN LEAVE. WAIT-FOR READ-RESPONSE OF hSocket. END. RUN cleanup. END PROCEDURE. PROCEDURE newState: DEFINE INPUT PARAMETER newState AS INTEGER. DEFINE INPUT PARAMETER pstring AS CHARACTER. /*IF vdebugmode THEN MESSAGE "newState: " newState " pstring: " pstring VIEW-AS ALERT-BOX.*/ vState = newState. IF pstring = "" THEN RETURN. SET-SIZE(vbuffer) = LENGTH(pstring) + 1. PUT-STRING(vbuffer,1) = pstring. hSocket:WRITE(vbuffer, 1, LENGTH(pstring)). SET-SIZE(vbuffer) = 0. END PROCEDURE. PROCEDURE readHandler: DEFINE VARIABLE vlength AS INTEGER NO-UNDO. DEFINE VARIABLE str AS CHARACTER NO-UNDO. DEFINE VARIABLE v AS INTEGER NO-UNDO. vlength = hSocket:GET-BYTES-AVAILABLE(). IF vlength > 0 THEN DO: SET-SIZE(vbuffer) = vlength + 1. hSocket:READ(vbuffer, 1, vlength, 1). str = GET-STRING(vbuffer,1). /*IF vdebugmode THEN MESSAGE "server:" str VIEW-AS ALERT-BOX.*/ SET-SIZE(vbuffer) = 0. v = INTEGER(ENTRY(1, str," ")). CASE vState: WHEN 1 THEN IF v = 220 THEN RUN newState(2, "HELO ~r~n"). ELSE vState = -1. WHEN 2 THEN DO: IF v = 250 THEN RUN newState(3, "MAIL From: " + vFrom + "~r~n"). ELSE vState = -1. END. WHEN 3 THEN DO: IF v = 250 THEN RUN newState(4, "RCPT TO: " + vTo + "~r~n"). ELSE vState = -1. END. WHEN 4 THEN DO: IF v = 250 THEN RUN newState(5, "DATA ~r~n"). ELSE vState = -1. END. WHEN 5 THEN DO: IF v = 354 THEN RUN newState(6, "From: " + vFrom + "~r~n" + "To: " + vTo + " ~r~n" + "Subject: " + vSubject + " ~r~n~r~n" + vBody + "~r~n" + ".~r~n"). ELSE vState = -1. END. WHEN 6 THEN DO: IF v = 250 THEN RUN newState(7,"QUIT~r~n"). ELSE vState = -1. END. END CASE. END. IF vState = 7 AND vdebugmode THEN MESSAGE "Email enviado com sucesso.". IF vState < 0 AND vdebugmode THEN MESSAGE "Email nao pode ser enviado". IF vState = 7 THEN l-ok = TRUE. END PROCEDURE. Obrigado,
bom dia eu utilizo EMS. Mas em todas as pastas e nao encontrei este api, quem que solicitar para datasul? embora so utilize EMS505.
Seria interessante você verificar com a Datasul se esta API pode ser utilizada no EMS5. Caso você precise da documentação dela posso te enviar.