Invio di mail e attachement

di il
5 risposte

Invio di mail e attachement

Da web ho recuperato una funzione che mi consente di inviare mail in access.
L'ho adottata in quanto mi era comprensibile l'interpretazione.
Nell'usarla però mi sono accorto che ha una importante limitazione.
In pratica mi consente di inviare la mail con al massimo un allegato.
Domanda agli esperti: è possibile introdurre una piccola modifica per passare magari un array al posto di una singola variabile? oppure un carattere separatore nella stringa degli allegati riconosciuto da Outlook ? ( per raggirare l'ostacolo)
Io personalmente non mi ritengo all'altezza.
grazie
antonio cuomo

Il codice è questo:
    
    Dim docpng, Oggetto, destinatario, msg As String
    docpng = Me!Allegati_mail
    Oggetto = Me!Oggetto_mail
    destinatario = Me!Destinatario_mail
    msg = Me!Testo_mail
    Call modOutlook_SendMail(docpng, Oggetto, destinatario, msg)

Sub modOutlook_SendMail(ByVal docpng As String, ByVal Oggetto As String, ByVal destinatario As String, ByVal msg As String)
    Dim mess_body As String
    Dim appOutLook As Outlook.Application
    Dim MailOutLook As Outlook.MailItem
    Set appOutLook = CreateObject("Outlook.Application")
    Set MailOutLook = appOutLook.CreateItem(olMailItem)
    Set appOutLook = CreateObject("Outlook.Application")
    Set MailOutLook = appOutLook.CreateItem(olMailItem)
    With MailOutLook
        .BodyFormat = olFormatRichText
        .To = destinatario
        .Subject = Oggetto
        .HTMLBody = msg
        ' se la variabile docpng è valorizzata, allora allega l'attachment
        If Len(docpng) > 4 Then
            .Attachments.Add (docpng)
        End If
        .Send
    End With
    MsgBox "Email Inviata!"
    Exit Sub
email_error:
    MsgBox "Si è verificato un errore! :( " & vbCrLf & "Il messaggio di errore è: " & Err.Description
    Resume Error_out
Error_out:
End Sub

5 Risposte

  • Re: Invio di mail e attachement

    Per come è scritta si... dovresti modificarla in modo da poter passare un'array di File... in quanto il Metodo ADD dell'Oggetto Attachment è già adatto per il tutto...
    
     .Attachments.Add (doc1)
     .Attachments.Add (doc2)
     .Attachments.Add (docN)
    ecc...
    Se vuoi dare uno sguardo a questo demo:


    Scarica il File e RINOMINALO con Estensione ZIP poi lo guardi...!
  • Re: Invio di mail e attachement

    Grazie alex vado .... e torno.
    antonio
  • Re: Invio di mail e attachement

    Dim docpng, Oggetto, destinatario, msg As String
    Antonio, commetti spesso questo errore che commettevo spesso anch'io. Per dichiarare tante variabili String (tutte insieme) bisogna scrivere
    Dim docpng As String, Oggetto As String, destinatario As String, msg As String
  • Re: Invio di mail e attachement

    Rispondo ad Osvaldo che saluto.
    Strano, per me è proprio nuova, è da tanto infatti che dichiaro in quel modo le variabili e mai mi era capitato di avere problemi.
    Tra l'altro non credo di essere l'unico.
    Non so, proverò; buono a sapersi.
    ciao
  • Re: Invio di mail e attachement

    Non è un errore grave (i codici passano lo stesso), non è facile accorgersene (anzi uno pensa che scrivere tutto su uno stesso rigo e separare con virgole in quella maniera sia implicito tutto (invece no)) e Access provvede con sue contromisure. Leggi qui
    http://forum.masterdrive.it/access-79/vba-dir-controllare-se-oggetto-esportato-esiste-gi-87627/index2.html
    dove @Alex accenna al Casting al post del 02-02-2015 08:25. In un altro thread (che ora non ricordo), sempre @Alex mi faceva notare che, quando non dichiari esplicitamente, VBA considera Variant di default...ma si tratta di un inutile spreco di risorse...insomma, per i pignoli meglio dichiarare esplicitamente variabile per variabile.
Devi accedere o registrarti per scrivere nel forum
5 risposte