Jump to content
zykon

Envio de email com vários anexos

Recommended Posts

zykon

Viva,

Tenho um programa que usamos para aceder a vários ficheiros pdf do nosso servidor.

Temos necessidade de muitas vezes enviar esses ficheiros por email, via outlook.

Neste momento já tenho o seguinte código para enviar um a um.

  Try
            Dim objOutlook As Outlook.Application
            Dim objEmail As Outlook.MailItem
            objOutlook = CType(CreateObject("Outlook.Application"), Outlook.Application)
            objEmail = objOutlook.CreateItem(Outlook.OlItemType.olMailItem)
            With objEmail
                .Subject = "Envio de Ficha de Segurança"
                .Attachments.Add("W:\EGEO_SOLVENTES\SGA\FDS\EGEO Solventes\SOLVENTES LIMPOS\Mercadorias\Misturas\Ecosol_W_PM9500014_4_PT.pdf")
                .Display(True)
            End With
        Finally
        End Try

O que eu queria era uma ajuda para poder vários ficheiros no mesmo email.

Se fosse possível com checkbox's e depois inserir no email os seleccionados era porreiro.

Se não, via clique num botão, que é o que uso agora

Share this post


Link to post
Share on other sites
Caça

Repetes esta linha

.Attachments.Add("W:\EGEO_SOLVENTES\SGA\FDS\EGEO Solventes\SOLVENTES LIMPOS\Mercadorias\Misturas\Ecosol_W_PM9500014_4_PT.pdf")


Pedro Martins

Não respondo a duvidas por PM

Share this post


Link to post
Share on other sites
zykon

Isso acho que não me serve, pois os ficheiros a enviar podem variar e assim tinha que prever todas as combinações possíveis e são centenas.

Por exemplo, hoje envio o ficheiro 1 e 2 e amanha o 5 e 7 e 9, etc...

O código acima, eu tenho num botão diferente para cada ficheiro.

Imagina, 100 ficheiros, 100 botões com o código acima.

Espero que me esteja a fazer entender.

Share this post


Link to post
Share on other sites
Caça

Precisas apenas de um botão... Só tens de mudar o caminho


Pedro Martins

Não respondo a duvidas por PM

Share this post


Link to post
Share on other sites
zykon

Desculpa, mas ou não te estou a entender ou não me estou a fazer entender. É mais provável que não te esteja a entender  😳

Isto é o que os utilizadores vêm e usam

http://img109.imageshack.us/img109/9416/vbnetm.png

O que eu preciso é de anexar vários daqueles ficheiros no mesmo email.

O que me estás a sugerir só me vai anexar o caminho que eu colocar no código, mas lá está, tinha que escrever todas as combinações possíveis.

Não é possível com umas checkbox's fazer isso, inserir os ficheiros correspondentes as checkbox's seleccionadas?

é que da minha visão de leigo, parece-me a opção mais acertada

Share this post


Link to post
Share on other sites
Caça

O ideal era teres uma função que depois ias chamar quando clicas em qualquer botão. Nessa função passavas o ou os caminhos


Pedro Martins

Não respondo a duvidas por PM

Share this post


Link to post
Share on other sites
zykon

não me podes dar uma ajuda com o código dessa função que falas?

Entretanto, tenho andado a batalhar com as tais checkbos e empanquei

 Try
            Dim objOutlook As Outlook.Application
            Dim objEmail As Outlook.MailItem
            objOutlook = CType(CreateObject("Outlook.Application"), Outlook.Application)
            objEmail = objOutlook.CreateItem(Outlook.OlItemType.olMailItem)

            If CheckBox1.Checked = True Then
                With objEmail
                    .Subject = "Envio de Ficha de Segurança"
                    .Attachments.Add("W:\EGEO_SOLVENTES\SGA\FDS\EGEO Solventes\RESIDUOS\Águas_Contaminadas_com_Solventes_PR0099000_4_PT.pdf")
                    .Display(True)
                End With
                If CheckBox2.Checked = True Then
                    With objEmail
                        .Attachments.Add("W:\EGEO_SOLVENTES\SGA\FDS\EGEO Solventes\RESIDUOS\Residuos_Clorados_Tóxicos_PR0099002_4_PT.pdf")
                        .Display(True)
                    End With
                End If
            End If
        Finally
        End Try

Isto é o que tenho e está a dar os seguintes resultados:

Quando nenhuma checkbox está seleccionada não faz nada  ;)

Quando apenas a checkbox 1 está seleccionada abre uma mensagem e anexa o ficheiro  :D

Quando apenas a checkbox 2 está seleccionada não faz nada  👎

Quando ambas estão selecionadas, primeiro abre um email só com o ficheiro correspondente à 1ª checkbox e quando fecho este email, abre outro com os dois ficheiros  😡

Share this post


Link to post
Share on other sites
Bartude

Experimenta por assim desta maneira:


With objEmail
.Subject = "Envio de Ficha de Segurança"
If CheckBox1.Checked = True Then
                    .Attachments.Add("W:\EGEO_SOLVENTES\SGA\FDS\EGEO Solventes\RESIDUOS\Águas_Contaminadas_com_Solventes_PR0099000_4_PT.pdf")
                    .Display(True)
                End With
                If CheckBox2.Checked = True Then
                        .Attachments.Add("W:\EGEO_SOLVENTES\SGA\FDS\EGEO Solventes\RESIDUOS\Residuos_Clorados_Tóxicos_PR0099002_4_PT.pdf")
                        .Display(True)
                    End With
                End If
            End If

Share this post


Link to post
Share on other sites
zykon

Já tá melhor,

Já funciona tudo, excepto quando é os dois, pois continua a abrir primeiro uma mensagem com apenas um ficheiro e só quando a fecho é que abre outra com os dois

Share this post


Link to post
Share on other sites
Caça

Coloca assim

With objEmail
.Subject = "Envio de Ficha de Segurança"
If CheckBox1.Checked = True Then
    .Attachments.Add("W:\EGEO_SOLVENTES\SGA\FDS\EGEO Solventes\RESIDUOS\Águas_Contaminadas_com_Solventes_PR0099000_4_PT.pdf")
    If CheckBox2.Checked = True Then
        .Attachments.Add("W:\EGEO_SOLVENTES\SGA\FDS\EGEO Solventes\RESIDUOS\Residuos_Clorados_Tóxicos_PR0099002_4_PT.pdf")
    End If
End If
.Display(True)


Pedro Martins

Não respondo a duvidas por PM

Share this post


Link to post
Share on other sites
Andrepereira9

Coloca assim

With objEmail
.Subject = "Envio de Ficha de Segurança"
If CheckBox1.Checked = True Then
    .Attachments.Add("W:\EGEO_SOLVENTES\SGA\FDS\EGEO Solventes\RESIDUOS\Águas_Contaminadas_com_Solventes_PR0099000_4_PT.pdf")
    If CheckBox2.Checked = True Then
        .Attachments.Add("W:\EGEO_SOLVENTES\SGA\FDS\EGEO Solventes\RESIDUOS\Residuos_Clorados_Tóxicos_PR0099002_4_PT.pdf")
    End If
End If
.Display(True)

Permite-me discordar, mas assim se só seleccionar a CheckBox2, ele não faz nada

Tenta antes assim:

With objEmail
.Subject = "Envio de Ficha de Segurança"
    If CheckBox1.Checked = True And CheckBox2.Checked = True Then
        .Attachments.Add("W:\EGEO_SOLVENTES\SGA\FDS\EGEO Solventes\RESIDUOS\Águas_Contaminadas_com_Solventes_PR0099000_4_PT.pdf")
        .Attachments.Add("W:\EGEO_SOLVENTES\SGA\FDS\EGEO Solventes\RESIDUOS\Residuos_Clorados_Tóxicos_PR0099002_4_PT.pdf")

    ElseIf CheckBox1.Checked = True Then
        .Attachments.Add("W:\EGEO_SOLVENTES\SGA\FDS\EGEO Solventes\RESIDUOS\Águas_Contaminadas_com_Solventes_PR0099000_4_PT.pdf")

    ElseIf CheckBox2.Checked = True Then
        .Attachments.Add("W:\EGEO_SOLVENTES\SGA\FDS\EGEO Solventes\RESIDUOS\Residuos_Clorados_Tóxicos_PR0099002_4_PT.pdf")
    End If

.Display(True)
End With


A informática chegou para resolver problemas que antes não existiam

Quem ri por último é porque está conectado a 52 Kbs.

Share this post


Link to post
Share on other sites
Caça

Tens razão, meu objectivo era apenas retirar o .Display(True) de dentro do IF para fora


Pedro Martins

Não respondo a duvidas por PM

Share this post


Link to post
Share on other sites
zykon

André, tens razão, com a opção do Caça a checkbox 2 não fazia nada, mas fazendo end if a seguir ao attachement já funciona bem.

A tua forma também funciona, no entanto se eu quiser adicionar mais ficheiros, parece-me que será necessário muito mais código.

Resumindo, agora está a funcionar assim

  Try
            Dim objOutlook As Outlook.Application
            Dim objEmail As Outlook.MailItem
            objOutlook = CType(CreateObject("Outlook.Application"), Outlook.Application)
            objEmail = objOutlook.CreateItem(Outlook.OlItemType.olMailItem)

          With objEmail
                .Subject = "Envio de Ficha de Segurança"
                If CheckBox1.Checked = True Then
                    .Attachments.Add("W:\EGEO_SOLVENTES\SGA\FDS\EGEO Solventes\RESIDUOS\Águas_Contaminadas_com_Solventes_PR0099000_4_PT.pdf")
                End If
                If CheckBox2.Checked = True Then
                    .Attachments.Add("W:\EGEO_SOLVENTES\SGA\FDS\EGEO Solventes\RESIDUOS\Residuos_Clorados_Tóxicos_PR0099002_4_PT.pdf")
                End If
                   .Display(True)
            End With
        Finally
        End Try
    End Sub

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.