Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
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 ?
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
Dei sim, ja testei Ctrl+ M / Ctrl+ shift M mas continua....
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 |
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'" !
mande um print da sua tela de macro
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.
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 |
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
Sim, você precisa colocar esse código dentro de uma SUB ou Function.