none
Qual variável armazena o usuário do outlook que recebe o e-mail? RRS feed

  • Pergunta

  • Estou um tempão batendo cabeça, mas como não sou da área não estou conseguindo...

    Tenho 10 contas de e-mail no meu outlook (user1@meudom.com.br, user2@meudom.com.br, etc) e preciso salvar os anexos dos e-mails em pastas específicas dos e-mails,

    O código abaixo está funcionando, mas salva os anexos na pasta strFolder = "C:\ARQS_RECS_EMAIL\" & Item.To & "\"... E o valor de "Item.To" pode ser diferente para uma mesma conta, dependendo do remetente do e-mail.

    O que devo colocar no lugar de "Item.To" para que os anexos sejam salvos em uma pasta com o nome da conta de e-mail, ou seja, os emails enviados para o user1@meudom.com.br do meu outlook sejam salvos na pasta de arquivos user1@meudom.com.br.

    O código que está funcionando:

    Public Sub SalvarAnexo(Item As MailItem)
        Dim att As Attachment
        Dim strFile As String
        Dim strExt As String
        Dim strFolder As String
        
        For Each att In Item.Attachments
            If Not (LCase(Right(att.FileName, 3)) = "jpg") Then
                strFolder = "C:\ARQS_RECS_EMAIL\" & Item.To & "\"
                On Error Resume Next
                MkDir strFolder
                On Error GoTo 0
                strFile = strFolder & Format(Item.CreationTime, "yyyymmdd_hhnnss_") & att.FileName
                att.SaveAsFile strFile
                On Error GoTo 0
            End If
        Next att
    End Sub

    Agradeço imensamente,

    terça-feira, 19 de abril de 2016 20:21

Respostas

Todas as Respostas

  • Amigos, 

    Estou um tempão batendo cabeça, mas como não sou da área não estou conseguindo...

    Tenho 10 contas de e-mail no meu outlook (user1@meudom.com.br, user2@meudom.com.br, etc) e preciso salvar os anexos dos e-mails em pastas específicas dos e-mails,

    O código abaixo está funcionando, mas salva os anexos na pasta strFolder = "C:\ARQS_RECS_EMAIL\" & Item.To & "\"... E o valor de "Item.To" pode ser diferente para uma mesma conta, dependendo do remetente do e-mail.

    O que devo colocar no lugar de "Item.To" para que os anexos sejam salvos em uma pasta com o nome da conta de e-mail, ou seja, os emails enviados para o user1@meudom.com.br do meu outlook sejam salvos na pasta de arquivos user1@meudom.com.br.

    Agradeço imensamente,

    terça-feira, 19 de abril de 2016 19:24
  • O código que está funcionando:

    Public Sub SalvarAnexo(Item As MailItem)
        Dim att As Attachment
        Dim strFile As String
        Dim strExt As String
        Dim strFolder As String
        
        For Each att In Item.Attachments
            If Not (LCase(Right(att.FileName, 3)) = "jpg") Then
                strFolder = "C:\ARQS_RECS_EMAIL\" & Item.To & "\"
                On Error Resume Next
                MkDir strFolder
                On Error GoTo 0
                strFile = strFolder & Format(Item.CreationTime, "yyyymmdd_hhnnss_") & att.FileName
                att.SaveAsFile strFile
                On Error GoTo 0
            End If
        Next att
    End Sub

    Agradeço imensamente,


    terça-feira, 19 de abril de 2016 19:26
  • Não entendi. Você já especificou o Item.To como uma variável do caminho onde os arquivos são salvos.

    Desta forma, o anexo é salvo num diretório que depende da conta em que você está logado.

    Poderia explicar melhor?


    http://www.ambienteoffice.com.br - http://www.clarian.com.br

    terça-feira, 19 de abril de 2016 21:16
    Moderador
  • Não entendi. Você já especificou o Item.To como uma variável do caminho onde os arquivos são salvos.

    Desta forma, o anexo é salvo num diretório que depende da conta em que você está logado.

    Poderia explicar melhor?


    http://www.ambienteoffice.com.br - http://www.clarian.com.br

    Obrigado pela atenção!

    Como eu disse, esse código está funcionando e os arquivos são salvos na pasta criada pelo "item.To". Só que o "item. To" acaba gerando diversas pastas para um mesmo usuário do outlook, uma vez que cada remetente tem um cadastro particular do usuário.

    Imagine um usuário chamado Roberto Carlos com uma conta user1@meudom.com.br. O "item.To" acaba gerando pastas como "robertão", "Roberto Carlos", "roberto fornecedor" e assim vai... Aí fica difícil administrar...

    O que eu quero é que a pasta seja única, independentemente da informação para "item.To" trazido pelo e-mail. Se alguém mandar um e-mail para o user1@meudom.com.br do meu exemplo, todos os arquivos serão salvos na pasta. Pensei que no lugar de "item.To" pudesse existir algo como item.To.Account"... 

    Será que deu pra entender?

    terça-feira, 19 de abril de 2016 23:09
  • Complementando... Quando o remetente inclui outras pessoas no campo "Para", o "item.To" cria uma pasta cujo nome é composto por todos os destinatários...
    terça-feira, 19 de abril de 2016 23:18
  • Use Item.Recipients(1).AddressEntry.GetExchangeUser.PrimarySmtpAd ao invés de Item.To

    http://www.ambienteoffice.com.br - http://www.clarian.com.br

    quarta-feira, 20 de abril de 2016 10:01
    Moderador
  • Boa tarde, Felipe.

    Fiz a alteração conforme abaixo, mas deu o seguinte erro:

    Erro em tempo de execução'91': A variável do objeto ou a variável do bloco 'With' não foi definida.

    Será que falta algo?

    Public Sub SalvarAnexo(Item As MailItem)
        Dim att As Attachment
        Dim strFile As String
        Dim strExt As String
        Dim strFolder As String
        
        For Each att In Item.Attachments
            If Not (LCase(Right(att.FileName, 3)) = "jpg") Then
                para = Item.Recipients(1).AddressEntry.GetExchangeUser.PrimarySmtpAd
                strFolder = "C:\ARQS_RECS_EMAIL\" & para & "\"
                On Error Resume Next
                MkDir strFolder
                On Error GoTo 0
                strFile = strFolder & Format(Item.CreationTime, "yyyymmdd_hhnnss_") & att.FileName
                att.SaveAsFile strFile
                On Error GoTo 0
            End If
        Next att
    End Sub


    quarta-feira, 20 de abril de 2016 18:57
  • Felipe, 

    Será suficiente que o anexo seja salvo em uma pasta identificada pela conta de e-mail na qual o e-mail foi recebido.

    Por favor, como eu faria no código para retornar a conta de e-mail?

    Obrigado,

    quarta-feira, 20 de abril de 2016 21:49
  • Ao inserir um código no fórum, utilize blocos de código. Para utilizar essa ferramenta, clique no botão cuja legenda é “Inserir bloco de código” na barra do editor de mensagens do fórum. Uma janela aparecerá onde você deverá colar seu código cru na caixa de texto à esquerda. Então, selecione a opção Vb.Net na caixa de combinação que você verá em cima à esquerda e depois clique no botão Inserir.

    ---

    para = Item.SenderMailAddress
    



    http://www.ambienteoffice.com.br - http://www.clarian.com.br

    quarta-feira, 20 de abril de 2016 22:19
    Moderador
  • Boa noite, Felipe.

    Obrigado, mas agora deu o erro:

    Erro em tempo de execução '438': O objeto não aceita esta propriedade ou método.

    quinta-feira, 21 de abril de 2016 00:31
  • Apenas para complementar: meu outlook é o 2010.
    quinta-feira, 21 de abril de 2016 01:12
  • Escrevi errado. O correto é: SenderEmailAddress

    http://www.ambienteoffice.com.br - http://www.clarian.com.br

    quinta-feira, 21 de abril de 2016 02:12
    Moderador

  • Acabei de resolver com:

    para = Item.ReceivedByName

    Obrigado mesmo assim! Suas dicas ajudaram na minha pesquisa.

    Fui!

    quinta-feira, 21 de abril de 2016 02:29