

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
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 ?
- « Previous Replies
-
- 1
- 2
- Next Replies »


- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
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


- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Dei sim, ja testei Ctrl+ M / Ctrl+ shift M mas continua....


- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
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 |


- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
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'" !


- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
mande um print da sua tela de macro


- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
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.


- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
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 |


- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
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


- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Sim, você precisa colocar esse código dentro de uma SUB ou Function.

- « Previous Replies
-
- 1
- 2
- Next Replies »