Qlik Community

Qlik Brasil

Group community for Brazil users. discussion only in Portuguese.

Highlighted
rafaelti_linhar
Not applicable

Erro Macro Gatilho de Email - CreateObject("CDO.Message")

Bom dia Pessoal,

Passei 5 anos afastado no Desenvolvimento Qlikview, e na época tinha desenvolvido esse gatilho normalmente.

Agora retornei para o Qlikview e surgiu uma demanda para criação desses gatilhos. Porém vi que tem muitos fóruns de discussão, mas todos bem antigos que utiliza CDO.MESSAGE schema de configuração da Microsoft.

Consegui implementar uma aplicação  utilizando a criação do objeto outlook.

  Set myApp = CreateObject ("Outlook.Application")

  Set myMessage = myApp.CreateItem(olMailItem)

Porém nos testes que uso da erro de criação do Objeto "O componente do ActiveX não pode criar objeto"

Set objMsg = CreateObject("CDO.Message")

Set msgConf = CreateObject("CDO.Configuration")

Aqui utilizamos o Thunderbird, instalei o OUTLOOK para fazer testes, na primeira implementação utilizando Outlook.Application deu certo, Já no CDO.Message não.


Vi que esse componente não vem mais integrado ao Outlook, e no site da microsoft mostra algo como descontinuado.


Hoje, qual melhor prática é adotada e utilizado para que vocês usam para implementar os Gatilhos ?

10 Replies
nicolett_yuri
Not applicable

Re: Erro Macro Gatilho de Email - CreateObject("CDO.Message")

Você deu permissão para a macro executar?

Ctrl + M

Modo de segurança requerido: Acesso ao sistema

Segurança local atual: Permitir acesso ao sistema

rafaelti_linhar
Not applicable

Re: Erro Macro Gatilho de Email - CreateObject("CDO.Message")

Dei sim, ja testei Ctrl+ M / Ctrl+ shift M mas continua....

nicolett_yuri
Not applicable

Re: Erro Macro Gatilho de Email - CreateObject("CDO.Message")

Segue um exemplo de macro (funcionando)

Dim objEmail
Const cdoSendUsingPort = 2 ' Send the message using SMTP
Const cdoBasic = 0 'basic (clear-text) authentication
Const cdoNTLM = 2 'NTLM
Const SMTPServer = "IPDOSEUSERVIDORSMTP"
Const SMTPPort = 25 ' Port number for SMTP
Const SMTPTimeout = 60 ' Timeout for SMTP in seconds
'Sending mail
Set objEmail = CreateObject("CDO.Message")
Set objConf = objEmail.Configuration
Set objFlds = objConf.Fields
With objFlds
'---------------------------------------------------------------------
' SMTP server details
.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = cdoSendUsingPort
.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = SMTPServer
.Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = cdoBasic
.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = SMTPPort
.Item("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = False
.Item("http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout") = SMTPTimeout
.Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = "E-MAIL-ORIGEM"
.Update
'---------------------------------------------------------------------
End With

objEmail.To = "E-MAIL-DESTINO"
objEmail.From = "E-MAIL-ORIGEM"
objEmail.Subject = "TESTANDO EMAIL"
    objEmail.TextBody = "TESTE 01"
objEmail.Send
Set objFlds = Nothing
Set objConf = Nothing
Set objEmail = Nothing
rafaelti_linhar
Not applicable

Re: Erro Macro Gatilho de Email - CreateObject("CDO.Message")

Boa tarde Yuri,

Fiz uma aplicação de teste com esse seu exemplo.

Aparece o erro "O componente ActiveX não consegue criar o objecto: 'CDO.Message'" !

nicolett_yuri
Not applicable

Re: Erro Macro Gatilho de Email - CreateObject("CDO.Message")

mande um print da sua tela de macro

rafaelti_linhar
Not applicable

Re: Erro Macro Gatilho de Email - CreateObject("CDO.Message")

Os erros ficam oscilando, agora apareceu esse : O servidor rejeitou o endereço do remetente. A resposta do servidor foi: 530 5.7.0 Authentication required.

modulo.PNG

nicolett_yuri
Not applicable

Re: Erro Macro Gatilho de Email - CreateObject("CDO.Message")

Seu servidor SMTP não possui relay aberta, por isso pede autenticação.

Para passar autenticação você precisa alterar algumas coisas no script, segue exemplo:

Dim objEmail
Const cdoSendUsingPort = 2 ' Send the message using SMTP
Const cdoBasic = 1 'basic (clear-text) authentication
Const cdoNTLM = 2 'NTLM
Const SMTPServer = "seu.servidor.smtp"
Const SMTPPort = 25 ' Port number for SMTP
Const SMTPTimeout = 60 ' Timeout for SMTP in seconds
'Sending mail
Set objEmail = CreateObject("CDO.Message")
Set objConf = objEmail.Configuration
Set objFlds = objConf.Fields
With objFlds
'---------------------------------------------------------------------
' SMTP server details
.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = cdoSendUsingPort
.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = SMTPServer
.Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = cdoBasic
.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = SMTPPort
.Item("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = False
.Item("http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout") = SMTPTimeout
.Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = "email.rementente"
.Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "senha"
.Update
'---------------------------------------------------------------------
End With

objEmail.To = "email.destinatario"
objEmail.From = "email.remetente"
objEmail.Subject = "TESTANDO EMAIL"
    objEmail.TextBody = "TESTE 01"
objEmail.Send
Set objFlds = Nothing
Set objConf = Nothing
Set objEmail = Nothing
rafaelti_linhar
Not applicable

Re: Erro Macro Gatilho de Email - CreateObject("CDO.Message")

Yuri, preciso fechar esse código como por ex.

function Gatilho()

end function

Pq está travando agora a aplicação de teste, fica executando e depois para... e não envia o email

nicolett_yuri
Not applicable

Re: Erro Macro Gatilho de Email - CreateObject("CDO.Message")

Sim, você precisa colocar esse código dentro de uma SUB ou Function.