MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

Obrigado

Administração do MaximoAccess

Dicas Ms Access, Exemplos Ms Access, Codigos VBA Ms Access, SQL Ms Access

    [Resolvido]Novo EmailCDO - Versão completa

    Compartilhe

    vileman
    Avançado
    Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 461
    Registrado : 25/05/2011

    [Resolvido]Novo EmailCDO - Versão completa

    Mensagem  vileman em Qui 02 Fev 2012, 03:14

    Caro Criquio, gostaria de sua ajuda no que segue, mas antes de tudo quero parabenizá-lo novamente pela nova versão do EmailCDO que agora ficou melhor e mais completa (arquivos: emailCDO.mdb e EmailCDO_be.mdb - com opções extras). Já estava utilizando a 1ª versão, a intenção agora é substituir por esta melhor.

    Ao abrir o arquivo para fazer meus testes e estudos aconteceu o seguinte:

    * P.S.: Uso Access 2003 com Windows 7 Ultimate 64 bits

    1) Ao abrir apareceu a mensagem de erro: Não foi encontrada a Referência ACEDAO.dll versão 12.0;

    2) ao abrir a estrutura e clicar em Ferramentas\Referências mostra: AUSENTE: Microsoft Office 12.0 Access Database Engine Object Library;

    3) Desmarquei a Referencia acima e testei novamente, e ao clicar no botão enviar do Formulário: frmEmail aparece a seguinte mensagem de erro: "O tipo definido pelo usuário não foi definido" e aponta para a linha onde tem "Dim db As DAO.Database". A mensagem do item 1 não mais apareceu;

    4) A mesma mensagem de erro do item 3 acontece nos demais Formulários: frmGrupos, frmContatos e frmPesquisa




    Convidad
    Convidado

    Re: [Resolvido]Novo EmailCDO - Versão completa

    Mensagem  Convidad em Sex 03 Fev 2012, 12:30

    Vileman
    Os dois arquivos pertencem ao office 12 (access2007).
    Eles teriam que já estar no teu computador
    Verifique a existencia deles.
    Se não tiver, creio que seria interessante reinstalar o office.
    Se ainda não resolver, fazer download e registrar.

    Abraços

    vileman
    Avançado
    Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 461
    Registrado : 25/05/2011

    Novo EmailCDO - Versão completa

    Mensagem  vileman em Sex 03 Fev 2012, 14:10

    Caro Balem, obrigado pela ajuda.

    Como estou usando o Access 2003 estão marcadas as Referencias Microsoft Office 11.0 Object Libray e Microsoft CDO for Windows 2000 Library, visto que os 2 arquivos usados na aplicação do Criquio são mdb.

    Quando você diz que os 2 arquivos pertencem ao office 12 (access 2007), a que 2 arquivos você se refere ?
    Eu teria que instalar o Office 2007 para funcionar o aplicativo em questão ?


    Convidad
    Convidado

    Re: [Resolvido]Novo EmailCDO - Versão completa

    Mensagem  Convidad em Sex 03 Fev 2012, 14:31

    Oi
    Me referi aos dois que você sitou, a dll e o Microsoft Office 12.0 Object Library.

    Bom, agora você me apertou sem me abraçar.

    Se falar algo mais, poderá ser besteira.

    Vamos aguardar o que o criquio nos orientar.

    Grande abraço


    Última edição por Balem em Sex 03 Fev 2012, 15:39, editado 1 vez(es)

    vileman
    Avançado
    Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 461
    Registrado : 25/05/2011

    Novo EmailCDO - Versão completa

    Mensagem  vileman em Sex 03 Fev 2012, 14:38

    Oi, Balem

    Valeu pela sua boa intenção de ajudar, então vamos aguardar pela ajuda do nosso colega Criquio.

    Um abraço

    vileman
    Avançado
    Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 461
    Registrado : 25/05/2011

    Novo EmailCDO - Versão completa

    Mensagem  vileman em Qua 22 Fev 2012, 13:18

    Alterado para Não-Resolvido.

    Convidad
    Convidado

    Re: [Resolvido]Novo EmailCDO - Versão completa

    Mensagem  Convidad em Qua 22 Fev 2012, 13:30


    Utilizo aqui no 2003 com as referências abaixo, e sem problemas.




    vileman
    Avançado
    Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 461
    Registrado : 25/05/2011

    Novo EmailCDO - Versão completa

    Mensagem  vileman em Sab 25 Fev 2012, 16:03

    Prezado Norbs, bom dia !

    Valeu pela ajuda visto que não mais apresentou nenhuma mensagem de erro, pois a única Referência que não estava marcada era justamente a que você marcou na imagem enviada: Microsoft DAO 3.6 Object Library.

    Aproveitando o mesmo assunto, gostaria de saber se você ou outro colega, saberia dizer como fazer para "capturar" a senha do usuário através do Formulário "frmEmail" que faz o envio do e-mail e a mesma ser repassada para o código do procedimento na Função "EnviarEmail" na linha que tem a senha (password):
    .Fields("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "cdosys123"

    Tentei fazer da seguinte forma, mas não funcionou:

    1) No Formulário "frmEmail":
    a) Criei um campo não-acoplado de nome "senha";
    b) no evento "ao clicar" coloquei os comandos, junto aos demais existentes:

    Private Sub btnEnviar_Click()
    If IsNull(Me.Senha) Or Me.Senha.Value = "" Then
    MsgBox "SENHA é de preenchimento obrigatório", vbOKOnly + vbCritical, "Campo vazio"
    Me.Senha.SetFocus

    If IsNull(Me.txtNome) Or Me.txtNome.Value = "" Then
    MsgBox "Campo Nome é de preenchimento obrigatório", vbOKOnly + vbCritical, "Campo vazio"
    Me.txtNome.SetFocus

    ElseIf IsNull(Me.txtEmail) Or Me.txtEmail.Value = "" Then
    MsgBox "Campo Email é de preenchimento obrigatório", vbOKOnly + vbCritical, "Campo vazio"
    Me.txtEmail.SetFocus

    ElseIf IsNull(Me.txtAssunto) Or Me.txtAssunto.Value = "" Then
    MsgBox "Campo Assunto é de preenchimento obrigatório", vbOKOnly + vbCritical, "Campo vazio"
    Me.txtAssunto.SetFocus
    Else
    DoCmd.OpenForm "frmProgresso"
    Forms!frmProgresso!lblInfo.Caption = "Enviando dados..." & vbCrLf & "Esse processo pode levar vários minutos dependendo o tamanho dos arquivos enviados e da velocidade da Internet." & vbCrLf & vbCrLf & "Por favor, aguarde..."
    Call EnviarEmail
    DoCmd.Close acForm, "frmProgresso"
    End If
    End Sub

    3) Na Função "EnviarEmail" acrescentei as linhas:
    Dim Senha As String
    Senha = "sua senha"
    .Fields("http://schemas.microsoft.com/cdo/configuration/sendusername") = "manvil@ig.com.br"
    .Fields("http://schemas.microsoft.com/cdo/configuration/sendpassword") = [Forms]![frmEmail]![Senha]

    PS: Fiz um teste ontem para envio de e-mail na rotina original e apareceu a mensagem "enviando mensagem .." e depois confirmando o envio, no entanto, após 1 dia até o momento, os e-mail enviados não chegaram ao destino, que no caso, foi para 2 emails meus, o que normalmente chegaria em questão de horas.

    Hoje alterei a conta de envio para a minha do IG, alterando apenas as linhas abaixo:

    .Fields("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.ig.com.br" 'Alterado de: smtp.gmail.com para: smtp.ig.com.br
    .Fields("http://schemas.microsoft.com/cdo/configuration/sendusername") = "manvil@ig.com.brm" 'Alterado de: [Você precisa estar registrado e conectado para ver este link.] para: [Você precisa estar registrado e conectado para ver este link.]
    .Fields("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "xxxx" 'Alterado de: cdosys123 para: xxxx

    Mas, não chegou nenhuma mensagem até o momento, alguém pode ajudar nisso também, ou devo aguardar mais quanto tempo ?
    avatar
    Assis
    Maximo VIP
    Maximo VIP

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 3014
    Registrado : 06/11/2009

    Re: [Resolvido]Novo EmailCDO - Versão completa

    Mensagem  Assis em Sab 25 Fev 2012, 16:29

    Boa tarde Vileman

    Tirado do Exemplo do Criquio

    Não Vejo as linhas a vermelho ?

    .Fields("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtps.bol.com.br" 'aqui foi configurado para
    .Fields("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 587 ' porta usada pelo bol
    .Fields("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
    .Fields("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1
    .Fields("http://schemas.microsoft.com/cdo/configuration/sendusername") = "fulano" 'se o email a ser usado
    .Fields("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "senha" 'coloque a senha do seu email
    .Fields("http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout") = 60


    .................................................................................
    *** Só sei que nada sei ***

    Convidad
    Convidado

    Re: [Resolvido]Novo EmailCDO - Versão completa

    Mensagem  Convidad em Sab 25 Fev 2012, 16:46

    Vileman

    Eu fiz diferente.

    Como meu aplicativo terá vários usuários(será disponibilizado na net), criei uma tabela tblContasEmail.
    Nela tenho os seguintes campos:
    ServidorEmail - texto
    Usuario - texto
    Senha - texto
    Servidor - texto
    Porta - número - inteiro
    SSL - Sim/Não

    criei um form para cadastrar essas contas
    No form Email:
    Na caixa de texto txtNome, mudei ela para combobox, com a origem da linha sendo uma consulta para essa tabela que criei
    No evento Após Atualizar dessa combobox, preencho os campos servidor Email, Usuario,Porta e SSL

    No código, referencio esses controles como você fez nesse:
    .Fields("http://schemas.microsoft.com/cdo/configuration/sendpassword") = [Forms]![frmEmail]![Senha].

    Testei para quase todos os servidores de email e todos foram bem sucedidos com exceção
    do nome@ymail.com da yahoo, que segundo eles tem que pedir autorização, para evitar envio de spans.

    Lembro que você deve ir na ajuda de cada servidor e verificar as configuração para encaminhamento POP.

    Abraços







    vileman
    Avançado
    Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 461
    Registrado : 25/05/2011

    Novo EmailCDO - Versão completa

    Mensagem  vileman em Dom 26 Fev 2012, 21:15

    Prezado Assis, havia colocado apenas as linhas onde fiz as alterações, ou seja, as demais linhas do código original ficaram sem alteração, na intenção de economizar linhas neste tópico que já estava grande, mas abaixo segue código completo como no original, exceto pelas alterações já citadas e com observação ao lado das mesmas:

    .Fields("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.ig.com.br" 'alterado d: smtp.gmail.com para: smtp.ig.com.br
    .Fields("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 465
    .Fields("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
    .Fields("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1
    .Fields("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = False
    .Fields("http://schemas.microsoft.com/cdo/configuration/sendusername") = "manvil@ig.com.brm" 'alterado de: [Você precisa estar registrado e conectado para ver este link.] para: [Você precisa estar registrado e conectado para ver este link.]
    .Fields("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "xxxx" 'alterado de: cdosys123 para: xxxx
    .Fields("http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout") = 60

    Pelo seu texto existe uma diferença na linha, do smtpserverport = 587, porta usada pelo Bol, no entanto, no código que peguei aqui no Fórum, está a porta 465 (usada pelo Gmail na conta do teste criado pelo Criquio).
    A outra linha do smtpconnectiontimeout = 60 está igual ao do código acima.

    A diferença na linha smtpserverport pode está ocasionando o não recebimento dos e-mails enviados por mim, como citado anteriormente, pois até o momento após 2 dias ainda não chegaram as mensagem enviadas através desse código ?

    vileman
    Avançado
    Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 461
    Registrado : 25/05/2011

    Novo EmailCDO - Versão completa

    Mensagem  vileman em Dom 26 Fev 2012, 21:19

    Prezado Balem, realmente era o que estou precisando, você acertou na mosca, então gostaria de saber se poderia disponibilizar um arquivo-cópia para estudos ?

    Abraços

    Convidad
    Convidado

    Re: [Resolvido]Novo EmailCDO - Versão completa

    Mensagem  Convidad em Seg 27 Fev 2012, 00:07

    Vileman

    Vou preparar o arquivo, assim que tiver pronto eu disponibilizo,

    Abraços

    Convidad
    Convidado

    Re: [Resolvido]Novo EmailCDO - Versão completa

    Mensagem  Convidad em Seg 27 Fev 2012, 16:18

    Vileman

    Como prometido.

    A Consulta qryEmails retorna os emails dos Clientes que tem email.
    Na consulta está a tblProprietários, donos de animais.
    Mantive para você poder ver os campos que tem nessa consulta.
    Portanto, substitua a tblProprietários pela de clientes.
    O original desse exemplo é a versão anterior a essa que o nosso amigo Criquio atualizou e eu deixei de acordo com a minha necessidade.

    Abraços
    Anexos
    EmailVileman.zip
    (81 Kb) Baixado 93 vez(es)


    Última edição por Balem em Qui 01 Mar 2012, 17:51, editado 1 vez(es)

    vileman
    Avançado
    Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 461
    Registrado : 25/05/2011

    Novo EmailCDO - Versão completa

    Mensagem  vileman em Seg 27 Fev 2012, 23:28

    Grande Balem, você é o cara!

    Muito obrigado pelo arquivo, vou estudar e com certeza irá ficar muito bom, valeu.

    Agora, para encerrar este tópico, gostaria de saber se você ou outro colega tem idéia do porquê os e-mails enviados não terem até o momento chegado ao seu destino, conforme as mensagens 08 e 11 deste tópico, já fiz vários testes e até agora nada aconteceu.

    Abraços

    Convidad
    Convidado

    Re: [Resolvido]Novo EmailCDO - Versão completa

    Mensagem  Convidad em Seg 27 Fev 2012, 23:37

    Vileman

    Façamos o seguinte:

    Teste esse exemplo que anexei e veja se funciona.
    Como disse no post anterior, nesse só não consegui com o Email do yahoo(@ymail.com), como já explicado.
    Depois veremos, ok?

    Abraços

    vileman
    Avançado
    Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 461
    Registrado : 25/05/2011

    Novo EmailCDO - Versão completa

    Mensagem  vileman em Ter 28 Fev 2012, 00:10

    Balem

    Combinado então, farei os testes e informo depois.

    Muita Paz.

    vileman
    Avançado
    Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 461
    Registrado : 25/05/2011

    Novo EmailCDO - Versão completa

    Mensagem  vileman em Qui 01 Mar 2012, 14:06

    Prezado Balem, após testes no arquivo enviado ocorreu o seguinte:

    1) Marquei as Referencias abaixo, após aparecerem alguns erros, o que solucionou a questão:
    Microsoft DAO 3.6 Library
    Microsoft Office xx.x Object Library
    Microsoft CDO for Windows 2000 Library

    2) No Formulário frmEmail ao clicar no Botão "Enviar" apareceu a mensagem: "Erro de execução '3024' não foi possível encontrar o arquivo - 'C:\Vileman\sisdbpeatual.accdb' e ao Depurar mostra o código com destaque para a linha: Set db = ws.OpenDatabase(CurrentProject.path & "\SisdbPetatual.accdb", False, False, "MS Access;PWD=suasenha"), que substitui pela seguinte linha: Set db = ws.OpenDatabase(CurrentProject.path & "\EmailVileman.mdb", False, False, "MS Access;PWD=null"), e não mais apareceu o erro.

    * PS: os 2 relatos acima é apenas para sua informação e acompanhamento do que ocorreu e que fiz até o momento

    3) No Formulário frmEmail ao clicar no Botão "..." origem do controle 'cmdPara' e ao surgir outro Formulário para selecionar um dos Destinatários e clicar em "ok" apareceu a mensagem: Erro de compilação - 'sub' ou 'function' não definida, mostrando o código do Formulário: frmDestinatarios:
    Private Sub cmdEnviar_Click()
    If Me.lstEmail.ItemsSelected.count = 0 Then
    MsgBox "Selecione um item da caixa de Listagem", , "Atenção"
    Else
    Select Case strBotao
    Case "cmdPara"
    Forms![frmEmail]!txtPara = SelMultipla(Me.lstEmail)
    Case "cmdCc"
    Forms![frmEmail]!txtCC = SelMultipla(Me.lstEmail)
    Case "cmdCco"
    Forms![frmEmail]!txtCCO = SelMultipla(Me.lstEmail)
    End Select
    DoCmd.Close
    End If
    End Sub

    Com destaque para a linha: Forms![frmEmail]!txtPara = SelMultipla(Me.lstEmail), colocando em fundo azul o termo 'SelMultipla', trava o BD. Então como proceder ?

    Convidad
    Convidado

    Re: [Resolvido]Novo EmailCDO - Versão completa

    Mensagem  Convidad em Qui 01 Mar 2012, 16:41

    Vileman

    Desculpe, esquecei de adicionar essa função em um módulo:

    Portanto abra um módulo e coloque:

    Código:


    Public Function SelMultipla(cmb As control) As String


    Dim varItem As Variant, strList As String

    With cmb
        For Each varItem In .ItemsSelected
        strList = strList & .Column(2, varItem) & ";"
        Next varItem
    End With
        If Right(strList, 1) = ";" Then
            strList = Left(strList, Len(strList) - 1)
        End If
       
    SelMultipla = CStr(strList)
       
    End Function

    Respondendo agora, porque meu monitor pifou.
    Editando:
    Já Atualizei o anexo.

    Abraços


    vileman
    Avançado
    Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 461
    Registrado : 25/05/2011

    Novo EmailCDO - Versão completa

    Mensagem  vileman em Sex 02 Mar 2012, 01:07

    Balem

    Agora funcionou perfeito, inclusive já mandei e-mails e praticamente chegaram ao destino de forma instantanea.

    Sem abusar de sua boa vontade e para encerrar este tópico, gostaria de esclarecer apenas mais o seguinte:

    1) Após clicar no botão "anexar arquivo" onde abaixo no controle lstAnexos (não-acoplado) que mostra o nome do arquivo anexado, e ao clicar 2 vezes no mesmo com a intenção de abrir o anexo, aparece a mensagem:
    Erro de compilação: 'Sub' ou 'function' não definida, e mostra o código:

    Private Sub lstAnexos_DblClick(Cancel As Integer)
    On Error GoTo TrataErr
    Dim strArquivo
    strArquivo = Me.lstAnexos.Column(0)
    Call ShellExecute(0, vbNullString, strArquivo, vbNullString, vbNullString, 1)
    TrataErr:
    If Err.Number = 53 Then
    MsgBox "O arquivo não foi localizado.", vbOKOnly + vbCritical, "Atenção"
    Cancel = True
    End If
    End Sub

    Com destaque para a linha Call ShellExecute(0, vbNullString, strArquivo, vbNullString, vbNullString, 1), colocando em amarelo o termo Call ShellExecute. Será que faltou marcar mais alguma Referência ?

    2) Fiz o seginte teste: Sem estar conectado à Internet tentei enviar e-mails e o mesmo não acusou que estava sem conexão, e apareceu o formulário exibindo: "Enviando mensagem - Enviando dados...
    Esse processo pode levar vários minutos dependendo o tamanho dos arquivos enviados e da velocidade da Internet.
    Por favor, aguarde.......". Tem como emitir um aviso informando que está sem conexão com a Internet.

    Abraços


    Convidad
    Convidado

    Re: [Resolvido]Novo EmailCDO - Versão completa

    Mensagem  Convidad em Sex 02 Mar 2012, 11:48

    Vileman

    Na realidade esse exemplo era só pra você ver como eu coloquei os formulários na minha aplicação, não era para ser funcional , mesmo porque esse exemplo é de uma versão anterior como explicado em post anterior.

    O que falta é a declaração da API, coloque num modulo geral na sessão declarações:

    Código:

    Public Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
    Abraços

    vileman
    Avançado
    Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 461
    Registrado : 25/05/2011

    Novo EmailCDO - Versão completa

    Mensagem  vileman em Sex 02 Mar 2012, 21:05

    Caro Balem,

    Coloquei o código enviado e funcionou.

    Realmente desde o início era apenas para mostrar como você havia feito no seu formulário, é que eu acabei me impolgando e esqueci a idéia inicial, desculpe por isso e dou por encerrado mais este tópico, agradecendo principalmente a você pela atenção, e deixando também um agradecimento ao Norbs que foi quem puxou o tópico para sua resolução, por último ao colega Assis, muita paz a todos.

    Abraços

    Convidad
    Convidado

    Re: [Resolvido]Novo EmailCDO - Versão completa

    Mensagem  Convidad em Sex 02 Mar 2012, 22:27


    Ótimo Vileman

    Valeu pelo retorno.

    Boa sorte!
    avatar
    lukdogdog
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 28
    Registrado : 21/06/2012

    Comando CDO para gravar email no itens enviados do servidor de Email

    Mensagem  lukdogdog em Qua 30 Ago 2017, 18:25

    Eu uso esse comando do CDO, mas acreditem, tenho diversos clientes que não usam esse recurso no sistema porque ele não grava uma cópia do e-mail que enviam nos itens enviados no servidor de e-mail deles.. Ja vasculhei a internet a procura de um comando que possa fazer isso e não achei. Alguém tem alguma dica, ou conhece um comando do CDO que grave uma cópia no Itens Enviados do servidor de email?
    Desde já, grato pela atenção

      Data/hora atual: Ter 21 Nov 2017, 21:03