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

    Enviar um email usando um botão que leia o campo de email

    Compartilhe
    avatar
    julianovv
    Super Avançado
    Super Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 553
    Registrado : 14/12/2010

    Enviar um email usando um botão que leia o campo de email

    Mensagem  julianovv em 8/11/2018, 10:20

    Bom dia. Tenho um banco de cadastro de associados com agenda e emails e gostaria que ao abrir o cliente de email do associado, o assunto e o corpo da mensagem estejam com um texto pré-definido. Isso é pedir demais?  Very Happy
    E pra piorar, é possível fazer isso com agendamento automático? Tipo, a cada 30 dias, o associado, se estiver atrasado, recebe um email de 'lembrança'?
    Alguém tem um exemplo pra passar?

    Obrigado!

    Smile


    .................................................................................
    Juliano

    Uso o Access 2007 no XP SP3
    Pentil 4 Duo Core 2 - 3.2 ghz  - HD 250 GB ATA II - Placa Asus P5LD2-X - 2 GB de memória DDR2 667 mhz Kingston - GForce GT220 - Monitor 17" LCD 732N Samsung - Impressora Epson T33
    [Você precisa estar registrado e conectado para ver esta imagem.]
    avatar
    Estuardo
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 20
    Registrado : 24/09/2014

    Re: Enviar um email usando um botão que leia o campo de email

    Mensagem  Estuardo em 9/11/2018, 18:38

    Boa Tarde,
    Utilizar o gestor de mail não é boa idea. por varias razoes. A primeira e mais importante é que não pode saber e mesmo sabendo garantir que ese gestor não muda. Ainda nem em todos os gestores é possível automatizar.
    Dito isto, automatizar sem o gestor é bem mais fácil, mais seguro e muito menos trabalho. Exemplo com CDO
    Código:

    Dim oMail  As Object

    Set oMail = CreateObject("CDO.Message")
    With oMail
        .Subject = eMessage.Subject
        .Sender = eMessage.Sender
        .To = eMessage.Recipient 'you can add multiple recipients here, even your own to keep a copy for yourself
        .TextBody = eMessage.MessageBody

       

        With .configuration.Fields
            .item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2  'SMTP constant
            .item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "mail.yahoo.com" 'like smtp.domain.ext
            .item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "yourpassword"
            .item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
            .Update
            oMail.Send
        End With
    End With

    Saludos
    avatar
    vieirasoft
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 7234
    Registrado : 11/05/2010

    Re: Enviar um email usando um botão que leia o campo de email

    Mensagem  vieirasoft em 9/11/2018, 19:16

    Pedindo desde já desculpas pela minha intromissão. talvez o colega possa fazer isso recorrendo a uma API e, dessa forma, poderá usar qualquer gestor de correio,ou pelo menos a grande maioria dos que são usados. Até à data é o que tenho usado sem problemas.

    1- Abra um novo módulo e dê-lhe o nome de mdlShellExecute

    2- Copie e cole. P.f. mantenha os créditos do autor

    Option Compare Database
    Option Explicit
    '
    ' This code was originally written by Dev Ashish.
    ' It is not to be altered or distributed,
    ' except as part of an application.
    ' You are free to use it in any application,
    ' provided the copyright notice is left unchanged.
    '
    ' Code Courtesy of Dev Ashish
    '
    Private Declare Function APIShellExecute 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

    '***App Window Constants***
    Public Const WIN_NORMAL = 1         'Open Normal
    Public Const WIN_MAX = 2            'Open Maximized
    Public Const WIN_MIN = 3            'Open Minimized

    '***Error Codes***
    Private Const ERROR_SUCCESS = 32&
    Private Const ERROR_NO_ASSOC = 31&
    Private Const ERROR_OUT_OF_MEM = 0&
    Private Const ERROR_FILE_NOT_FOUND = 2&
    Private Const ERROR_PATH_NOT_FOUND = 3&
    Private Const ERROR_BAD_FORMAT = 11&

    '***************Usage Examples***********************
    'Open a folder:     ?fHandleFile("C:\TEMP\",WIN_NORMAL)
    'Call Email app:    ?fHandleFile("mailto:dash10@hotmail.com",WIN_NORMAL)
    'Open URL:          ?fHandleFile("http://hoMe.txtatt.net/~dashish",WIN_NORMAL)
    'Handle Unknown extensions (call Open With Dialog):
    '                   ?fHandleFile("C:\TEMP\README",Win_Normal)
    'Start Access instance:
    '                   ?fHandleFile("C:\TEMP\CodeNStuff.mdb", Win_NORMAL)
    '****************************************************





    Function fHandleFile(stFile As String, lShowHow As Long)
    Dim lRet As Long, varTaskID As Variant
    Dim stRet As String
       'First try ShellExecute
       lRet = APIShellExecute(hWndAccessApp, vbNullString, _
               stFile, vbNullString, vbNullString, lShowHow)
               
       If lRet > ERROR_SUCCESS Then
           stRet = vbNullString
           lRet = -1
       Else
           Select Case lRet
               Case ERROR_NO_ASSOC:
                   'Try the OpenWith dialog
                   varTaskID = Shell("rundll32.exe shell32.dll,OpenAs_RunDLL " _
                           & stFile, WIN_NORMAL)
                   lRet = (varTaskID <> 0)
               Case ERROR_OUT_OF_MEM:
                   stRet = "Error: Out of Memory/Resources. Couldn't execute!"
               Case ERROR_FILE_NOT_FOUND:
                   stRet = "Error: File not found.  Couldn't Execute!"
               Case ERROR_PATH_NOT_FOUND:
                   stRet = "Error: Path not found. Couldn't Execute!"
               Case ERROR_BAD_FORMAT:
                   stRet = "Error:  Bad File Format. Couldn't Execute!"
               Case Else:
           End Select
       End If
       fHandleFile = lRet & _
                   IIf(stRet = "", vbNullString, ", " & stRet)
    End Function
    Function fShellExeTest()
    'Test UNC ShellExecute
       fShellExeTest = APIShellExecute(hWndAccessApp, vbNullString, _
                       "\\server23\home-cd\dashish\ute_ref.txt", _
                       vbNullString, vbNullString, 1)
    End Function
    Function fShellExe(strFileName As String, lngShow As Long) As Long
       fShellExe = APIShellExecute(hWndAccessApp, vbNullString, strFileName, _
           vbNullString, vbNullString, lngShow)
    End Function

    Sub testShellEXE()
    Dim lngX As Long
       lngX = fShellExe("http://www.microsoft.com", 1)
    End Sub
    -------------------------------------

    Abra um novo módulo e chame-o de : APIShellExecute

    Agora copie para o módulo este código

    Option Compare Database
    Option Explicit
    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
    Public Const SW_SHOW = 3

    Agora, crie um botão e coloque-o no lado direito do seu campo Email. Chame a esse campo "txtEmail", por exemplo.

    No evento ao fazer clique do botão:

    ShellExecute Me.hwnd, "open", "mailto:" & txtEmail, vbNullString, vbNullString, SW_SHOW

    Desta forma o seu gestor de email abre já com o endereço de email preenchido. Pode fazer muito mais, como preencher o corpo etc. Abraço
    avatar
    julianovv
    Super Avançado
    Super Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 553
    Registrado : 14/12/2010

    Enviar um email usando um botão que leia o campo de email

    Mensagem  julianovv em 10/11/2018, 00:28

    Obrigado pelos códigos. Vou dar uma estudada e mando um retorno!

    Laughing


    .................................................................................
    Juliano

    Uso o Access 2007 no XP SP3
    Pentil 4 Duo Core 2 - 3.2 ghz  - HD 250 GB ATA II - Placa Asus P5LD2-X - 2 GB de memória DDR2 667 mhz Kingston - GForce GT220 - Monitor 17" LCD 732N Samsung - Impressora Epson T33
    [Você precisa estar registrado e conectado para ver esta imagem.]
    avatar
    julianovv
    Super Avançado
    Super Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 553
    Registrado : 14/12/2010

    Res: Enviar um email usando um botão que leia o campo de email

    Mensagem  julianovv em 10/11/2018, 12:32

    Bom dia vieirasoft. Esse código apenas abre a caixa de criar email com o email do contato? Não funcionou. O erro segue no anexo com o código 'ao clicar' do botão.

    erro ao clicar

    Obrigado.


    .................................................................................
    Juliano

    Uso o Access 2007 no XP SP3
    Pentil 4 Duo Core 2 - 3.2 ghz  - HD 250 GB ATA II - Placa Asus P5LD2-X - 2 GB de memória DDR2 667 mhz Kingston - GForce GT220 - Monitor 17" LCD 732N Samsung - Impressora Epson T33
    [Você precisa estar registrado e conectado para ver esta imagem.]
    avatar
    vieirasoft
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 7234
    Registrado : 11/05/2010

    Re: Enviar um email usando um botão que leia o campo de email

    Mensagem  vieirasoft em 10/11/2018, 13:04

    O exemplo que lhe estou a enviar é o mesmo código que passei e não dá erro no botão. Este exemplo abre o seu gestor de correio com o email que está na ficha preenchido. Não era isto?

    [Você precisa estar registrado e conectado para ver este link.]
    avatar
    julianovv
    Super Avançado
    Super Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 553
    Registrado : 14/12/2010

    Res: Enviar um email usando um botão que leia o campo de email

    Mensagem  julianovv em 10/11/2018, 16:23

    Obrigado vieirasoft, deu certo mas só em partes. No Access tem o tipo de campo 'hiperlink' que já abre o cliente de email exibindo o email do contato.
    Seria completo se esse botão copiasse os 3 campos do formulário (criei simulando um cliente de email com os mesmos campos: Para, Assunto e Corpo da Mensagem) no Access. Eu precisava que cada campo no formulário fosse para o seu respectivo campo no programa de email.
    Os textos do Para, Assunto e Corpo da Mensagem viriam dos dados do contato.
    Obrigado!

    Wink


    .................................................................................
    Juliano

    Uso o Access 2007 no XP SP3
    Pentil 4 Duo Core 2 - 3.2 ghz  - HD 250 GB ATA II - Placa Asus P5LD2-X - 2 GB de memória DDR2 667 mhz Kingston - GForce GT220 - Monitor 17" LCD 732N Samsung - Impressora Epson T33
    [Você precisa estar registrado e conectado para ver esta imagem.]
    avatar
    vieirasoft
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 7234
    Registrado : 11/05/2010

    Re: Enviar um email usando um botão que leia o campo de email

    Mensagem  vieirasoft em 10/11/2018, 17:02

    Meu caro, estude o exemplo e acrescente as caixas que pretende. teste assim no exemplo que lhe enviei

    ShellExecute hwnd, vbNullString, "mailto:" & Email & "?Subject=Pedido de informação" & " & Body=venho pedir a seguinte informação: ", vbNullString, CurrentProject.Path, 1

    Por exemplo: No corpo do email pode substituir o "venho pedir a seguinte informação:" por uma caixa de texto no seu form, não é ?!

    & Body=& mimnha caixa de texto
    avatar
    vieirasoft
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 7234
    Registrado : 11/05/2010

    Re: Enviar um email usando um botão que leia o campo de email

    Mensagem  vieirasoft em 10/11/2018, 17:07

    Assim:

    ShellExecute Me.hwnd, "open", "mailto:" & txtEmail & "?Subject=Proposta Orçamento" & "&Body=:" & Me.Proposta, vbNullString, vbNullString, SW_SHOW
    avatar
    julianovv
    Super Avançado
    Super Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 553
    Registrado : 14/12/2010

    Res: Enviar um email usando um botão que leia o campo de email

    Mensagem  julianovv em 10/11/2018, 19:04

    Obrigado! Vou tentar a mando um retorno.



    .................................................................................
    Juliano

    Uso o Access 2007 no XP SP3
    Pentil 4 Duo Core 2 - 3.2 ghz  - HD 250 GB ATA II - Placa Asus P5LD2-X - 2 GB de memória DDR2 667 mhz Kingston - GForce GT220 - Monitor 17" LCD 732N Samsung - Impressora Epson T33
    [Você precisa estar registrado e conectado para ver esta imagem.]

      Data/hora atual: 15/11/2018, 04:53