none
enviar arquivos da pasta pr e-mail RRS feed

  • Pergunta

  • Pessoal, boa tarde.

    tenho uma pasta que dentro dela há alguns arquivos onde 2x vezes por dia

    preciso compacta-los e envia-los por e-mail.

    Vcs sabem de algum script que possa fazer isso?

     

    obrigado,

     

    Alex

     

    segunda-feira, 22 de janeiro de 2007 15:28

Respostas

  • Alex,

    Segue um exemplo que faz isto que você está pedindo. O Script compacta usando o MAKECAB.EXE, e envia o e-mail com o arquivo anexado.

    Você precisará fazer algumas mudanças e controles conforme sua necessidade, mas o básico é isso.

    Espero ter ajudado,

    Daniel

    '============================
    ' Início do Script
    '============================
    Dim Diretorio
    strDiretorio = "C:\Download\Scripts\Exchange\Technet"

    Set ObjShell = CreateObject("wscript.shell")

    Set fso = CreateObject("Scripting.FileSystemObject")
    Set folder = fso.GetFolder(strDiretorio)
    Set files = folder.Files
    For each folderIdx In files
     strCmd = "makecab.exe " & folderIdx.Name & " " & folderIdx.Name & ".zip"
     ObjShell.run strCmd
     If Err.Number = 0 Then
      EnviaEmail "
    auto@abc.com.br", "alguem@abc.com", strDiretorio & "\" & folderIdx.Name & ".zip"
    Else
      wscript.Echo Err.Number
     End If
    Next

    Sub EnviaEmail(strFrom, strTo, strAttach)
     'Entre com as Variáveis abaixo
     strSMTPServer = "128.1.1.1"
     strUser = "dom\user"
     strPass = "
    P@ssw0rd"
     strSubject = "Teste de Envio de Mensagem com Autenticação"
     strHTML = "<HTML>"
     strHTML = strHTML & "<HEAD>"
     strHTML = strHTML & "<BODY>"
     strHTML = strHTML & "<b>Esta é uma mensagem de teste</b></br>"
     strHTML = strHTML & "</BODY>"
     strHTML = strHTML & "</HTML>"
     
     Const cdoSendUsingPort = 2
     
     set iMsg = CreateObject("CDO.Message")
     set iConf = CreateObject("CDO.Configuration")
     
     Set Flds = iConf.Fields
     
     With Flds
         .Item("
    http://schemas.microsoft.com/cdo/configuration/sendusing") = cdoSendUsingPort
         .Item("
    http://schemas.microsoft.com/cdo/configuration/smtpserver") = strSMTPServer
         .Item("
    http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout") = 10 
         .Item("
    http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1
         .Item("
    http://schemas.microsoft.com/cdo/configuration/sendusername") = strUser
         .Item("
    http://schemas.microsoft.com/cdo/configuration/sendpassword") = strPass
         .Update
     End With
     
     With iMsg
         Set .Configuration = iConf
         .To = strTo
         .From = strFrom
         .Subject = strSubject
      .AddAttachment strAttach
         .HTMLBody = strHTML
         .Send
     End With
     
     Set iMsg = Nothing
     Set iConf = Nothing
     Set Flds = Nothing
     
     wscript.echo "E-mail Enviado com Sucesso!"
    End Sub
    '============================
    ' Fim do Script
    '============================

    terça-feira, 23 de janeiro de 2007 16:59
  • Para o script abaixo você precisará do sendmail.exe(ir no google e buscar, é uma das primeiras páginas) e do 7-zip

    criar o seguinte arquivo .bat

    7z a -tzip d:\arquivo.zip z:\
    sendmail /smtpserver smtp.teste.com.br /from vspaes@teste.com.br /to teste@teste.com.br /subject assunto /user vspaes /password senha /attachment d:arquivo.zip

    onde:
    "d:\arquivo" - é o local onde será criado o arquivo .zip e o nome dele
    "z:\" - conteúdo que será compactado
    "smtp.teste.com.br" - seu servidor smtp
    "vspaes@teste.com.br" - seu email
    "teste@teste.com.br" - email do destinatário
    "assunto" - assunto da mensagem
    "vspaes" - seu usuário no servidor smtp (alguns requerem que seja digitado o email completo - vspaes@teste.com.br)
    "senha" - sua senha
    "d:arquivo.zip" - o local onde foi criado o arquivo .zip que será anexado ao email


    depois que estiver tudo pronto você pode criar um tarefa no agendador de tarefas do windows para enviar em determinados horários.

    obs: para funcionar corretamente o sendmail.exe deve estar na mesma pasta do arquivo .bat, ou vc deve especificar o caminho completo dele no arquivo .bat
    terça-feira, 30 de janeiro de 2007 18:09

Todas as Respostas

  • Alex,

    Segue um exemplo que faz isto que você está pedindo. O Script compacta usando o MAKECAB.EXE, e envia o e-mail com o arquivo anexado.

    Você precisará fazer algumas mudanças e controles conforme sua necessidade, mas o básico é isso.

    Espero ter ajudado,

    Daniel

    '============================
    ' Início do Script
    '============================
    Dim Diretorio
    strDiretorio = "C:\Download\Scripts\Exchange\Technet"

    Set ObjShell = CreateObject("wscript.shell")

    Set fso = CreateObject("Scripting.FileSystemObject")
    Set folder = fso.GetFolder(strDiretorio)
    Set files = folder.Files
    For each folderIdx In files
     strCmd = "makecab.exe " & folderIdx.Name & " " & folderIdx.Name & ".zip"
     ObjShell.run strCmd
     If Err.Number = 0 Then
      EnviaEmail "
    auto@abc.com.br", "alguem@abc.com", strDiretorio & "\" & folderIdx.Name & ".zip"
    Else
      wscript.Echo Err.Number
     End If
    Next

    Sub EnviaEmail(strFrom, strTo, strAttach)
     'Entre com as Variáveis abaixo
     strSMTPServer = "128.1.1.1"
     strUser = "dom\user"
     strPass = "
    P@ssw0rd"
     strSubject = "Teste de Envio de Mensagem com Autenticação"
     strHTML = "<HTML>"
     strHTML = strHTML & "<HEAD>"
     strHTML = strHTML & "<BODY>"
     strHTML = strHTML & "<b>Esta é uma mensagem de teste</b></br>"
     strHTML = strHTML & "</BODY>"
     strHTML = strHTML & "</HTML>"
     
     Const cdoSendUsingPort = 2
     
     set iMsg = CreateObject("CDO.Message")
     set iConf = CreateObject("CDO.Configuration")
     
     Set Flds = iConf.Fields
     
     With Flds
         .Item("
    http://schemas.microsoft.com/cdo/configuration/sendusing") = cdoSendUsingPort
         .Item("
    http://schemas.microsoft.com/cdo/configuration/smtpserver") = strSMTPServer
         .Item("
    http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout") = 10 
         .Item("
    http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1
         .Item("
    http://schemas.microsoft.com/cdo/configuration/sendusername") = strUser
         .Item("
    http://schemas.microsoft.com/cdo/configuration/sendpassword") = strPass
         .Update
     End With
     
     With iMsg
         Set .Configuration = iConf
         .To = strTo
         .From = strFrom
         .Subject = strSubject
      .AddAttachment strAttach
         .HTMLBody = strHTML
         .Send
     End With
     
     Set iMsg = Nothing
     Set iConf = Nothing
     Set Flds = Nothing
     
     wscript.echo "E-mail Enviado com Sucesso!"
    End Sub
    '============================
    ' Fim do Script
    '============================

    terça-feira, 23 de janeiro de 2007 16:59
  • Para o script abaixo você precisará do sendmail.exe(ir no google e buscar, é uma das primeiras páginas) e do 7-zip

    criar o seguinte arquivo .bat

    7z a -tzip d:\arquivo.zip z:\
    sendmail /smtpserver smtp.teste.com.br /from vspaes@teste.com.br /to teste@teste.com.br /subject assunto /user vspaes /password senha /attachment d:arquivo.zip

    onde:
    "d:\arquivo" - é o local onde será criado o arquivo .zip e o nome dele
    "z:\" - conteúdo que será compactado
    "smtp.teste.com.br" - seu servidor smtp
    "vspaes@teste.com.br" - seu email
    "teste@teste.com.br" - email do destinatário
    "assunto" - assunto da mensagem
    "vspaes" - seu usuário no servidor smtp (alguns requerem que seja digitado o email completo - vspaes@teste.com.br)
    "senha" - sua senha
    "d:arquivo.zip" - o local onde foi criado o arquivo .zip que será anexado ao email


    depois que estiver tudo pronto você pode criar um tarefa no agendador de tarefas do windows para enviar em determinados horários.

    obs: para funcionar corretamente o sendmail.exe deve estar na mesma pasta do arquivo .bat, ou vc deve especificar o caminho completo dele no arquivo .bat
    terça-feira, 30 de janeiro de 2007 18:09