Como obter o anexo de e-mail do outlook em um servidor de arquivos?

1

Histórico:

Todo dia de trabalho recebo uma mensagem de e-mail de um remetente conhecido. O remetente coloca um anexo na mensagem de email. Eu tenho que processar esse anexo com um script python.

Pergunta:

Qual é a melhor maneira (automática) de obter o anexo do Outlook e da minha conta de shell (ou sistema de arquivos local) para poder processá-lo com o script, sem precisar abrir manualmente o arquivo todos os dias e salvar o anexo?

    
por dreftymac 10.10.2009 / 04:14

3 respostas

3

Eu suponho que você tenha um servidor Exchange com o qual o Outlook esteja falando. O IMAP está ativado no servidor? Em caso afirmativo, deve ser razoavelmente trivial escrever um programa que pesquisa o servidor IMAP por um email de um determinado remetente recebido nas últimas 24 horas e analise (o que eu suponho ser) um anexo MIME.

    
por 10.10.2009 / 06:11
5

Eu estava pesquisando a mesma coisa e encontrei um script.

  1. Você precisa abrir o outlook e pressionar Alt + F11
  2. No painel esquerdo, expanda Objetos do Microsoft Outlook
  3. Clique duas vezes em Sessão do Outlook®
  4. Copie e cole este código:

    (Nota: em "Const save_path como String=" c: \ Temp \ "" (substitua "c: \ Temp \" pelo caminho para o seu servidor de arquivos. Lembre-se de terminar o caminho sempre com "\")

    Sub SaveToFolder(MyMail As MailItem)
    Dim strID As String
    Dim objNS As Outlook.NameSpace
    Dim objMail As Outlook.MailItem
    Dim objAtt As Outlook.Attachment
    Dim c As Integer
    Dim save_name As String
    'Place path to sav to on next line. Note that you must include the
    'final backslash
    Const save_path As String = "c:\Temp\"
    
    strID = MyMail.EntryID
    Set objNS = Application.GetNamespace("MAPI")
    Set objMail = objNS.GetItemFromID(strID)
    
    If objMail.Attachments.Count > 0 Then
    For c = 1 To objMail.Attachments.Count
    Set objAtt = objMail.Attachments(c)
    save_name = Left(objAtt.FileName, Len(objAtt.FileName) - 5)
    save_name = save_name & Format(objMail.ReceivedTime, "_mm-dd-yyyy_hhmm")
    save_name = save_name & Right(objAtt.FileName, 5)
    objAtt.SaveAsFile save_path & save_name
    
    Next
    End If
    
    Set objAtt = Nothing
    Set objMail = Nothing
    Set objNS = Nothing
    End Sub
    
  5. Vá para Depurar no menu e Compile ...

  6. Feche a tela VB
  7. Vá para regras e crie uma regra: quando o email for recebido da pessoa mencionada no grupo de distribuição, execute um script (selecione o script (seu script será listado)). Eu adicionaria uma notificação com a regra para que você saiba que a regra também foi executada para mover o email para uma pasta específica.
  8. Feche e reabra o Outlook.
por 05.05.2011 / 17:38
2

O processador avançado de ETL pode responder automaticamente a e-mails, salvar anexos e processar e-mails com base em várias regras

link

    
por 27.09.2010 / 00:11