Enviar e-mail automaticamente aos clientes
Nota importante: para ter acesso aos vídeos e arquivos exemplos deste site, adquira um dos planos apresentados abaixo. Você pode comprar em até 5x no Cartão de Crédito.
Veja como comprar e saiba mais sobre o material oferecido, clicando aqui.
Usuário Samuel:
É um prazer fazer parte deste site.
Estou a alguns dias tentando fazer com que o meu sistema de emissão de Ordem de
Serviços, através do botão enviar e-mail, pelo número da Ordem de Serviços, que é filtrado, converta o relatório referente à
Ordem de Serviços em PDF e anexe no Outlook. Busque o e-mail do cliente e então envie o PDF ao
referido cliente.
Sei que é pedir demais, mas ainda não tenho tanta experiência em programação assim.
Conto com a sua ajuda.
Suporte:
Samuel,
fiz um pequeno exemplo para você testar. Atente para os comentários no código oferecido.
Nota: Você tem que criar a pasta chamada
enviados, no mesmo local em que você copiar este exemplo.
Para maiores detalhes sobre o uso do código proposto,
clique AQUI e leia
o meu artigo:
Segue o código utilizado no exemplo:
Private Sub btEnviarEmail_Click() Dim strArquivo As String Dim strLocal As String Dim objOut As Object Dim objmail As Object Dim objAnexo As Object Const olMailItem = 0 Const olByValue = 1 '--------------------------------------------- 'Carregando a coleção do Outlook 'Similar ao abrir o Outlook '--------------------------------------------- Set objOut = CreateObject("Outlook.application") '-------------------------------------------------------------- 'Abrindo o formulário de e-mail para inserir os itens de e-mail 'Similar ao clicar no botão NOVO do Outlook '-------------------------------------------------------------- Set objmail = objOut.CreateItem(olMailItem) '------------------------------------------------------------ 'Abrindo a opção anexo 'Similar ao clicar no botão ANEXO do Outlook '------------------------------------------------------------ Set objAnexo = objmail.Attachments '---------------------------------------------------------------------------- 'Indico o nome do arquivo PDF e o local que será gravado. 'Neste exemplo, gero os nomes dos arquivos, aproveitando o número da OS, 'ficando com o seguinte aspecto: OS00001.pdf, OS00002.pdf,... '---------------------------------------------------------------------------- strArquivo = "OS" & Format(Me!idOs, "00000") & ".pdf" strLocal = CurrentProject.Path & "\enviados\" & strArquivo '---------------------------------------------------------------------------- 'Abre o relatório filtrado e oculto, de acordo com a OS selecionada. '---------------------------------------------------------------------------- DoCmd.OpenReport "rltOs", acViewPreview, , "Idos=" & Me!idOs, acHidden '---------------------------------------------------------------------------- 'Gera o PDF do relatório, através do comando OutputTo. 'O mecanismo do Access reconhece que o relatório solicitado pelo OutputTo 'já está aberto e então, o OutputTo usará o relatório já aberto e filtrado. '---------------------------------------------------------------------------- DoCmd.OutputTo acOutputReport, "rltos", acFormatPDF, strLocal '--------------------------------------------- 'Fecha o relatório que está oculto '--------------------------------------------- DoCmd.Close acReport, "rltos" '------------------------------------------------------------- 'Adiciona o arquivo PDF no anexo, capturado da pasta enviados '------------------------------------------------------------- objAnexo.Add strLocal, olByValue, 1 '---------------------------------------------- 'Preenche o e-mail com as informações necessárias '----------------------------------------------- objmail.Subject = "Ordem de Serviços" objmail.Body = "Segue anexo sua Ordem de Serviços, aberta recentemente" objmail.To = DLookup("email", "tblClientes", "idcliente = " & Me!IdCliente) '---------------------------------------------------------------------- 'Mostra o formulário de envio de e-mail
'para enviar o e-mail automático, altere esta linha para: objmail.send '----------------------------------------------------------------------- objmail.Display '------------------------------------------------------- 'Tudo já foi entregue ao Outlook, então podemos esvaziar 'a memória do computador usada pelas variáveis objeto. '------------------------------------------------------- Set objAnexo = Nothing Set objmail = Nothing Set objOut = Nothing End Sub
Download
2 comentário(s) Augusto 18/07/2023 17:46:37 Salve, Avelino Uso um codigo semelhante a esse para enviar emails pelo gmail que roda perfeitamente em minha máquina. No entanto, quando rodo em uma maquina virtual com o Windows 10 e Office 365 recebo a msg "falha na conexao do transporte com o servidor". Mas se entrar no Gmail nessa maquina consigo enviar normalmente. Já liberei a envio de msgs por aplicativos no Google, mas não funcionou. Existe uma solução para isso? Grato. Marcelo 25/04/2023 05:26:45 Bom dia a todos do forum. Referente a esse codigo eu criei outro que e muito bom pois ele nao precisa do outlok ele envia tudo direto pelo access e e configurado os parametros da conta em um formulario. Ele gera o pdf e depois do envio ele deleta o pdf da pasta pra n fica acumulando logo mando pra vcs ai. |