× Linguagem de Programação ADVPL

Perguntas E-mail não enviando, erro no oMessage:Send

Mais
10 anos 6 meses atrás #22548 por pedropalaoro
Pessoal, fiz uma função que é chamada dentro do pedido de venda para que a pessoa que verifica os pedidos envie e-mail para quem for necessário direto do pedido de venda. Ainda estou mexendo nele. Mas não estou conseguindo faze-lo sair. Tenho outros P.E. e funções com esse objeto e funcionam. Mas esse não passa do penúltimo IF, que é justamente para ver o objeto oMessage:Send. Ele ta erro de There was no response from the server.
Mas como já falado o serviço esta normal. Então creio que estou comendo mosca em uma parte que eu ainda não identifiquei. Gostaria de um ajuda.

Obrigado.

Segue abaixo o fonte.



#Include "protheus.ch"
/*
Autor Pedro Palaoro
Data: 05/05/2014
@Envia e-mail para o vendedor direto do pedido de venda.
*/
User Function fMail()

Local oSButton1,oSButton2,oGDe,oGroup,oSDe,oSPara,oGPara,oSCc,oGCc,oSBcc,oGBcc,oSAss,oGAss,oSMsg,oMMsg

Local oDlg
Local sGDe := "Este endereço de email está sendo protegido de spambots. Você precisa do JavaScript ativado para vê-lo."
Local sGPara := SPACE(100)
Local sGCc := SPACE(100)
Local sGBcc := SPACE(100)
Local sGAss := SPACE(100)
Local sGAnx := SPACE(100)
Local cMMsg
Local sMsg := ''

oDlg := MsDialog():New(10,10,448,300,"Envio de e-mail para Vendedor",,,,,,.T.,,,.T.)

oGroup := tGroup():New(2,2,220,144,"Dados para envio de e-mail: ",oDlg,,,.T.)

oSDe := tSay():New(17,5,{||"De:"},oDlg,,,,,,.T.,,,50,20)
oGDe := tGet():New(15,40,{|u| IIF(PCount()>0,sGDe:=u,sGDe)},oDlg,100,10,,{|o| !Empty(AllTrim(sGDe))},,,,,,.T.,,,,,,,,,,'sGDe')

oSPara := tSay():New(37,5,{||"Para:"},oDlg,,,,,,.T.,,,50,20)
oGPara := tGet():New(35,40,{|u| IIF(PCount()>0,sGPara:=u,sGPara)},oDlg,100,10,,{|o| !Empty(AllTrim(sGPara))},,,,,,.T.,,,,,,,,,,'sGPara')

oSCc := tSay():New(57,5,{||"Cc:"},oDlg,,,,,,.T.,,,50,20)
oGCc := tGet():New(55,40,{|u| IIF(PCount()>0,sGCc:=u,sGCc)},oDlg,100,10,,,,,,,,.T.,,,,,,,,,,'sGCc')

oSBcc := tSay():New(77,5,{||"Bcc:"},oDlg,,,,,,.T.,,,50,20)
oGBcc := tGet():New(75,40,{|u| IIF(PCount()>0,sGBcc:=u,sGBcc)},oDlg,100,10,,,,,,,,.T.,,,,,,,,,,'sGBcc')

oSAss := tSay():New(97,5,{||"Assunto:"},oDlg,,,,,,.T.,,,50,20)
oGAss := tGet():New(95,40,{|u| IIF(PCount()>0,sGAss:=u,sGAss)},oDlg,100,10,,,,,,,,.T.,,,,,,,,,,'sGAss')

oSMsg := tSay():New(157,5,{||"Mensagem:"},oDlg,,,,,,.T.,,,50,20)
oMMsg := tMultiget():New(155,40,{|u| IIF(PCount()>0,cMMsg:=u,cMMsg)},oDlg,100,50,,,,,,.T.)

oSButton1 := SButton():New(200,85,1,{||Processa({ ||enviar(sGDe,sGPara,sGCc,sGBcc,sGAss,sGAnx,cMMsg)},"AGUARDE")},oDlg,.T.,,)
oSButton2 := SButton():New(200,115,2,{||oDlg:END()},oDlg,.T.,,)

oDlg:Activate(,,,.T.,,,,,)


Return


STATIC FUNCTION enviar(sGDe,sGPara,sGCc,sGBcc,sGAss,sGAnx,cMMsg)


Local cServer := Alltrim(GetMV("MV_WFSMTP")) //servidor para envio de email
Local cAccount := Alltrim(GetMV("MV_WFMAIL")) // nome da conta a ser utilizada
Local cPassword := Alltrim(GetMV("MV_WFPASSW")) // Define a senha da conta a ser usada para autenticação
Local oServer
Local oMessage
Local nNumMsg := 0
Local nTam := 0
Local nI := 0

//Cria a conexão com o server STMP ( Envio de e-mail )
oServer := TMailManager():New()

// Usa SSL na conexao
oServer:setUseSSL(GETMV('MV_YUSESSL'))
oServer:SetUseTLS(GETMV('MV_YUSETLS'))
oServer:Init( "", cServer, cAccount, cPassword, 0, 587 )

//seta um tempo de time out com servidor de 1min I
If oServer:SetSmtpTimeOut( 60 ) != 0
sMsg := "Falha ao setar o time out"
Conout(sMsg)
Alert(sMsg)
Return .F.
EndIf

//realiza a conexão SMTP
// Conecta ao servidor
nErr := oServer:smtpConnect()
If nErr <> 0
sMsg := "[ERROR]Falha ao conectar: " + oServer:getErrorString(nErr)
oServer:smtpDisconnect()
Conout(sMsg)
Alert(sMsg)
return .F.
Endif

// Realiza autenticacao no servidor
nErr := oServer:smtpAuth(cAccount, cPassword)
If nErr <> 0
sMsg := "[ERROR]Falha ao autenticar: " + oServer:getErrorString(nErr)
oServer:smtpDisconnect()
Conout(sMsg)
Alert(sMsg)
return .F.
Endif

//Apos a conexão, cria o objeto da mensagem
oMessage := TMailMessage():New() //Limpa o objeto
oMessage:Clear()

//Popula com os dados de envio
oMessage:cFrom := Alltrim(sGDe)
oMessage:cTo := Alltrim(sGPara)
oMessage:cCc := Alltrim(sGCc)
oMessage:cBcc := Alltrim(sGBcc)
oMessage:cSubject := Alltrim(sGAss)
oMessage:cBody := cMMsg

nErr := oMessage:Send( oServer )
if nErr <> 0
sMsg := "[ERROR]Nao conseguiu enviar o e-mail: " + oServer:GetErrorString( nErr )
conout( sMsg )
Alert(sMsg)
Return .F.
endif

//Desconecta do servidor
If oServer:SmtpDisconnect() != 0
sMsg := "Erro ao desconectar do servidor SMTP"
Conout(sMsg)
Alert(sMsg)
Return .F.
EndIf


RETURN .T.

Por favor Acessar ou Registrar para participar da conversa.

Mais
10 anos 6 meses atrás #22557 por pedropalaoro
Pessoal

Desconsiderem...realmente era o servidor de e-mail que estava errado.


Mesmo assim obrigado.

Por favor Acessar ou Registrar para participar da conversa.

Tempo para a criação da página:0.147 segundos
Joomla templates by a4joomla