Prezados,
Segue aqui a solução das aflições de quem as versões antigas abaixo da versao 22 e para quem precisa enviar email pelo celular com o Windev Mobile sem a necessidade de abrir uma tela de um aplicativo de terceiro.
Video explicativo de como usar o webservice para mandar emails
LINK DE ACESSO
http://wxmagazine.pcscloud.net/WSGMAIL_WEB/awws/index.htm
WSDL
http://wxmagazine.pcscloud.net/WSGMAIL_WEB/awws/WsGmail.awws?wsdl
METODO DE CADASTRO E OBTENCAO DE TOKEN
http://wxmagazine.pcscloud.net/WSGMAIL_WEB/awws/Ws_AddClienteSendMail.htm
USE TOKENBOLLER = ADRIANOBOLLER
METODO DE ENVIO DE EMAIL
http://wxmagazine.pcscloud.net/WSGMAIL_WEB/awws/Ws_SendMail.htm
IMAGENS DO PROJETO
//Envio do Email e seu retorno
This XML file does not appear to have any style information associated with it. The document tree is shown below.
<SOAP-ENV:Envelope xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Header>
<nhs:WSID xmlns="urn:WsGmail" xmlns:nhs="urn:WsGmail" xsi:type="xsd:hexBinary" mustUnderstand="1">DD46A1C47D9C5892255F8074AB4AFF00C7FFAA2C</nhs:WSID>
</SOAP-ENV:Header>
<SOAP-ENV:Body>
<ns1:Ws_SendMailResponse xmlns:ns1="urn:WsGmail">
<Ws_SendMailResult>Retorno: 0 Mensagem: Mensagem enviada com sucesso!</Ws_SendMailResult>
</ns1:Ws_SendMailResponse>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
Código Fonte
//GLOBAL DO PROJETO
GLOBAL
gs_email is string = "webservices@wxinformatica.com"
gs_password is string = "abcdefghijklmnopkrqtuv"
gs_Smtp_Server is string = "mail.wxinformatica.com"
gs_Smtp_Port is string = 587
gs_Smtp_Tipo is string = "Default"
HModifyStructure("*")
HCréationSiInexistant("*","Senha")
//GLOBAL PROCEDURE
arr_Resultados is array of string
gsValorMemorizado is string = 1
DeclareWebserviceContext(gsValorMemorizado)
DeclareWebserviceContext(arr_Resultados)
Procedure Ws_AddClienteSendMail(TokenBoller, seuNome, seuEmail, seuCelular, suaFinalidadeUso)
ok is boolean
msg_retorno, sHash, seuToken is ANSI string
IF seuNome = "" THEN
msg_retorno += "Nome é Obrigatório"+CRLF
END
IF seuEmail = "" THEN
msg_retorno += "Email é Obrigatório"+CRLF
END
IF seuCelular = "" THEN
msg_retorno += "Celular é Obrigatório"+CRLF
END
IF suaFinalidadeUso = "" THEN
msg_retorno += "Finalidade de Uso é Obrigatório"+CRLF
END
IF msg_retorno = "" THEN
sHash = seuNome + " " + seuEmail + " " + seuCelular
seuToken = Crypt(sHash,"ADRIANOBOLLER",compresseAucun,encodeBASE64)
IF Upper(TokenBoller) = "ADRIANOBOLLER" AND msg_retorno = "" THEN
HConnectionOpen(MyConnHfsqlWsGmail)
HModifyStructure("*")
HCréationSiInexistant("*","Senha")
t001_clientes_wsgmail.t001_nome = seuNome
t001_clientes_wsgmail.t001_email = seuEmail
t001_clientes_wsgmail.t001_celular = seuCelular
t001_clientes_wsgmail.t001_token = seuToken
t001_clientes_wsgmail.t001_finalidade = suaFinalidadeUso
t001_clientes_wsgmail.t001_status = 1
IF HAdd(t001_clientes_wsgmail) = True THEN
ok = True
ELSE
ok = False
END
HConnectionClose(MyConnHfsqlWsGmail)
END
ELSE
msg_retorno += "Campos obrigatórios não preenchidos"+CRLF
END
IF ok = True
msg_retorno += "Mensagem de retorno: Gravou com Sucesso, seu token é: "+ seuToken +CRLF
ELSE
msg_retorno += "Mensagem de retorno: Erro ao gravar dados" +CRLF
END
IF ErrorInfo() <> "" THEN
msg_retorno += "Erro: " + ErrorInfo()
END
arrayResultadoLocal is array of string
Add(arrayResultadoLocal,msg_retorno)
RESULT(arrayResultadoLocal)
Procedure Ws_SendMail(sToken, sDe, sPara, sCC, sAssunto, sMensagem, arraybytesAnexo_01, arraybytesAnexo_02, arraybytesAnexo_03, arraybytesAnexo_04, arraybytesAnexo_05, booleanMsgHtml, booleanRecebimento)
i is int
AdresseTemp is string
clEmail is an Email
stSession is an emailSMTPSession
ok, resultado is boolean = False
msg_retorno is string = ""
IF booleanMsgHtml = "" THEN
booleanMsgHtml = 0
END
IF booleanRecebimento = "" THEN
booleanRecebimento = 0
END
IF gs_Smtp_Server = "" THEN
msg_retorno += "gs_Smtp_Server inválido!"+CRLF
resultado = False
END
IF gs_Smtp_Port = "" THEN
msg_retorno += "gs_Smtp_Port inválido!"+CRLF
resultado = False
END
IF gs_Smtp_Tipo = "" THEN
msg_retorno += "gs_Smtp_Tipo inválido!"+CRLF
resultado = False
END
IF gs_email = "" THEN
msg_retorno += "gs_email inválido!"+CRLF
resultado = False
END
IF gs_password = "" THEN
msg_retorno += "gs_password inválido!"+CRLF
resultado = False
END
IF sDe = "" THEN
msg_retorno += "sDe inválido!"+CRLF
resultado = False
END
IF sPara = "" THEN
msg_retorno += "sPara inválido!"+CRLF
resultado = False
END
IF sAssunto = "" THEN
msg_retorno += "sAssunto inválido!"+CRLF
resultado = False
END
IF sMensagem = "" THEN
msg_retorno += "sMensagem inválido!"+CRLF
resultado = False
END
IF sToken <> "" AND sDe <> "" AND sPara <> "" AND sAssunto <> "" AND sMensagem <> "" AND msg_retorno = ""
HConnectionOpen(MyConnHfsqlWsGmail)
HModifyStructure("*")
HCréationSiInexistant("*","Senha")
REQ_BuscaToken.Paramt001_token = sToken
IF HExecuteQuery(REQ_BuscaToken,MyConnHfsqlWsGmail,hRequêteDéfaut+hRequêteSansCorrection) = True
FOR EACH REQ_BuscaToken
IF HFound(REQ_BuscaToken) = True THEN
ok = True
END
END
IF ok = True THEN
clEmail..SenderAddress = sDe
clEmail..Sender = sDe
Add(clEmail..Recipient, sPara)
Add(clEmail..Destinataire, sPara)
clEmail..Subject = sAssunto
clEmail..Message = sMensagem
clEmail..DispositionNotification = booleanRecebimento
clEmail..Priority = emailHighPriority
IF booleanMsgHtml = True OR booleanMsgHtml = 1
IF PositionOccurrence(sMensagem,"<",firstRank,DepuisDébut) > 0
clEmail..HTML = sMensagem
ELSE
clEmail..HTML = TextToHTML(sMensagem)
END
END
EmailConfigure(emailParameterMode, 1)
i = 1
LOOP
AdresseTemp = ExtractString(sCC,i,";")
IF AdresseTemp <> EOT THEN
Add(clEmail..Cc,AdresseTemp)
i++
ELSE
BREAK
END
END
IF arraybytesAnexo_01 <> ""
EmailLoadAttachment(clEmail,arraybytesAnexo_01)
END
IF arraybytesAnexo_02 <> ""
EmailLoadAttachment(clEmail,arraybytesAnexo_02)
END
IF arraybytesAnexo_03 <> ""
EmailLoadAttachment(clEmail,arraybytesAnexo_03)
END
IF arraybytesAnexo_04 <> ""
EmailLoadAttachment(clEmail,arraybytesAnexo_04)
END
IF arraybytesAnexo_05 <> ""
EmailLoadAttachment(clEmail,arraybytesAnexo_05)
END
stSession..ServerAddress = gs_Smtp_Server
stSession..Port = gs_Smtp_Port
stSession..Name = gs_email
stSession..Password = gs_password
IF gs_Smtp_Tipo = "Default"
stSession..Option = emailOptionDefault
ELSE IF gs_Smtp_Tipo = "TLS"
stSession..Option = emailOptionSecuredTLS
ELSE IF gs_Smtp_Tipo = "SSL"
stSession..Option = optionSSL
ELSE
stSession..Option = emailOptionSécuriséTLS
END
stSession..Asynchronous = True
EmailChangeTimeOut(60)
IF EmailStartSession(stSession) = True THEN
EmailStartSMTPSession(gs_email,gs_password,gs_Smtp_Server,gs_Smtp_Port,True,emailOptionSécuriséTLS)
IF EmailSendMessage(stSession,clEmail) THEN
t001_wsgmail_log.t001_datahora = DateSys() + TimeSys()
t001_wsgmail_log.t001_token = sToken
t001_wsgmail_log.t001_email_de = sDe
t001_wsgmail_log.t001_email_para = sPara
t001_wsgmail_log.t001_email_cc = sCC
t001_wsgmail_log.t001_emai_assunto = sAssunto
t001_wsgmail_log.t001_email_mensagem = sMensagem
HAdd(t001_wsgmail_log)
HConnectionClose(MyConnHfsqlWsGmail)
IF ErrorInfo() = ""
msg_retorno += "Mensagem enviada com sucesso!"+CRLF
resultado = True
ELSE
msg_retorno += "Não foi possivel enviar a mensagem! Erro: "+ErrorInfo()+CRLF
resultado = False
END
ELSE
msg_retorno += "Não foi possivel enviar a mensagem! Erro: "+ErrorInfo()+CRLF
resultado = False
END
ELSE
msg_retorno += "Não foi possivel enviar a mensagem! Erro: "+ErrorInfo()+CRLF
resultado = False
END
ELSE
msg_retorno += "Token não encontrado! ou "+ErrorInfo()+CRLF
resultado = False
END
ELSE
msg_retorno += "Token inválido! ou "+ErrorInfo()+CRLF
resultado = False
END
IF sDe = "" THEN
msg_retorno += "Sem preenchimento do campo: DE"+CRLF
END
IF sPara = "" THEN
msg_retorno += "Sem preenchimento do campo: PARA"+CRLF
END
IF sAssunto = "" THEN
msg_retorno += "Sem preenchimento do campo: ASSUNTO"+CRLF
END
IF sMensagem = "" THEN
msg_retorno += "Sem preenchimento do campo: MENSAGEM"+CRLF
END
IF sToken = "" THEN
msg_retorno += "Sem preenchimento do campo: TOKEN"
END
resultado = False
END
vErroEmail is Variant = Email.Erreur
IF Val(vErroEmail) > 0 THEN
SWITCH Val(vErroEmail)
CASE 1: msg_retorno += "Cancelamento solicitado pelo usuário"+CRLF
CASE 2: msg_retorno += "Erro desconhecido"+CRLF
CASE 3: msg_retorno += "Incapaz de conectar"+CRLF
CASE 4: msg_retorno += "Disco cheio"+CRLF
CASE 5: msg_retorno += "Fora da memória"+CRLF
CASE 6: msg_retorno += "Acesso negado"+CRLF
CASE 7: msg_retorno += "Muitas sessões abertas"+CRLF
CASE 8: msg_retorno += "Muitas sessões abertas"+CRLF
CASE 9: msg_retorno += "Muitos anexos (até 10 arquivos)"+CRLF
CASE 10: msg_retorno += "Muitos destinatários (até 20 destinatários)"+CRLF
CASE 11: msg_retorno += "Anexo não encontrado"+CRLF
CASE 12: msg_retorno += "Não é possível abrir o anexo"+CRLF
CASE 13: msg_retorno += "Não é possível escrever o anexo"+CRLF
CASE 14: msg_retorno += "Recebedor desconhecido"+CRLF
CASE 15: msg_retorno += "Mensagem inválida"+CRLF
CASE 16: msg_retorno += "Mensagem inválida"+CRLF
CASE 17: msg_retorno += "Mensagem inválida"+CRLF
CASE 18: msg_retorno += "Texto da mensagem muito longo"+CRLF
CASE 19: msg_retorno += "Sessão inválida"+CRLF
CASE 20: msg_retorno += "Cancelamento solicitado pelo usuário"+CRLF
CASE 21: msg_retorno += "Endereço de destinatário ambíguo"+CRLF
CASE 22: msg_retorno += "Cancelamento solicitado pelo usuário"+CRLF
CASE 23: msg_retorno += "Erro de rede"+CRLF
END
END
EmailCloseSession(gs_email)
msg_retorno = "Retorno: "+ resultado +" Mensagem: "+ msg_retorno
arrayResultadoLocal is array of string
Add(arrayResultadoLocal,msg_retorno)
RESULT(arrayResultadoLocal)
BASE DE DADOS
CREATE TABLE "t001_clientes_wsgmail" (
"t001_clientes_ID" NUMERIC(19,0) PRIMARY KEY ,
"t001_nome" VARCHAR(50) NOT Null UNIQUE ,
"t001_email" VARCHAR(256) NOT Null ,
"t001_celular" VARCHAR(20) NOT Null ,
"t001_finalidade" VARCHAR(512) NOT Null ,
"t001_token" VARCHAR(512) NOT Null ,
"t001_status" BIT NOT Null );
//EXEMPLO COMO USAR NO WINDEV, WEBDEV E WINDEV MOBILE
Envio is a Ws_SendMailResponse
Envio = Ws_SendMail("QWRyaWFubyBKb3NlIEJvbGxlciBhZHJpYW5vYm9sbGVyQGdtYWlsLmNvbSA0MTk5OTQ5MTgwMA==",
"adrianoboller@gmail.com",
"adrianoboller@gmail.com",
"julianaaboller@gmail.com",
"Consumindo o novo webservice da Wx Informatica",
"Resolvido o Abacaxi... Resolvido o Abacaxi... Resolvido o Abacaxi... Resolvido o Abacaxi...",
"",
"",
"",
"",
"",
0,
0)
retorno is string = Envio.Ws_SendMailResult
Info(retorno)
--
Adriano José Boller
______________________________________________
Consultor e Representante Oficial da
PcSoft no Brasil
+55 (41) 99949 1800
adrianoboller@gmail.com
skype: adrianoboller
http://wxinformatica.com.br/Mensaje modificado, 15,marzo 2018 - 04:59