Automatizzare invio documento tramite mail

di sevenhertz il
8 risposte
Salve a tutti. Avrei bisogno di un consiglio su quello che vorrei realizzare.
Dovrei inviare un documento via mail a moltissimi contatti. Solo che al documento deve essere cambiata l'intestazione per ogni contatto.
Inoltre il documento deve essere inviato in formato pdf, quindi convertito prima di essere inviato.
Avrei pensato:
- tabella dove inserire tutti i contatti a cui inviare il documento;
- maschera semplice per inserire i dati nella tabella;
- report in cui inserire il documento da inviare, con un campo controllato per cambiare di volta in volta l'intestazione;
ora viene il bello
Come posso fare per convertire il report in pdf e poi inviarlo via mail?

Grazie anticipatamente a tutti

8 Risposte

  • Non conosco bene access ma quello che chiedi sarebbe relativamente facile in .net ,esistono delle librerie opensource per convertire da testo a pdf ,per inviarlo via email potresti usare queste due classi MailMessage ed SmtpClient ,per scrivere il programma ti basterebbero o visual studio community o sharpdevelop, entrambi gratuiti
  • Ma che librerie esterne... Access consente di stampare direttamente in PDF ed anche di inviare mail.
    A complicarsi la vita con codice esterno si fa sempre a tempo...

    Quindi serve un ciclo per tutti gli utenti aprendo un recordset sulla tabella e per ogni Record stampare il file pdf ed allegato alla mail da inviare.

    Alcune volte si potrebbe imparare a fare una ricerca nel Forum
    https://www.iprogrammatori.it/forum-programmazione/access/inviare-report-via-pdf-t15906.html
  • Grazie mille Alex, ma non essendo un utente espertissimo di access, non sapevo quale chiave di ricerca usare... Mi spiegheresti meglio cosa significa aprire un recordset per tutti gli utenti?
  • @Alex ha scritto:


    Deve essere chiaro che servono un minimo di basi per affrontare i problemi tecnici, anche per interfacciarsi al forum... altrimenti per ogni domanda servono 4 lezioni di base...

    Puoi partire da qui:
    https://msdn.microsoft.com/en-us/library/office/ff820966.aspx

    Grazie mille, utilissimo!
  • Aggiornamento... studiando e documentandomi grazie ai vostri consigli, ho creato una maschera con un pulsante "Salva" che mi salva in pdf i file, rinominandoli in base al campo da me scelto come segue:

    Dim Nomefile, sCampo As String
    sCampo = Format([Forms]![Invio_documento]![Campo])
    sNome = Format([Forms]![Invio_documento]![Nome])
    Nomefile = sNome & " " & sCampo
    DoCmd.OutputTo acOutputReport, "Report", acFormatPDF, "C:\users\" & Nomefile & ".pdf", False

    Tutto funziona regolarmente.

    Poi ho inserito un altro pulsante per inviare la mail allegando il report in pdf:

    sMail = ([Forms]![Invio_documento]![Mail])

    DoCmd.SendObject acSendReport, "Report", acFormatPDF, sMail, , , "Oggetto", "Testo della mail", True

    e qui ho qualche problemuccio: si apre la finestra di outlook, allega il report in pdf, inserisce l'oggetto, ma nel campo del destinatario mi inserisce la mail in questo modo: #mailto:# che chiaramente outlook non riconosce come indirizzo. Non sono riuscito a capire come mai. E poi, quando chiudo la mai mi appare un errore e finestra di debug selezionando in giallo tutta la riga del Docmd....

    Inoltre avrei bisogno di un altro consiglio: Oltre al report che cambia di volta in volta, dovrei allegare un altro pdf che è sempre lo stesso per tutte le mail, ma mi pare di aver capito che non sia possibile...
    Grazie
  • Questo accade in quanto hai definito il campo MAIL come Hyperlinnk e non come TEsto semplice... il che è un grosso errore di inesperienza...!
    Ti suggerisco di modificare il campo da Hyperlink a Testo, e di eseguire una QUery UPDATE che taglia il testo dopo il primo [#]... così risolvi tutto
    
    UPDATE NomeTabella
    SET  [Mail]=Mid$([Mail],1,Instr([Mail],'#')-1)
    Incolla il predicato in QBE(SQL) non nella Struttura, altrimenti se componi la Query da struttura devi sostituire le VIRGOLE con PUNTOVIRGOLA.
  • Fatto, grazie; mi è bastato cambiare la definizione del campo in testo, e il problema dell'indirizzo mail si è risolto. Quindi, la query non mi è servita.
    Ora ho notato però che la mail non viene inviata, ma si apre solo la finestra di outlook pronta per l'invio. Ma la cosa strana è che se vado nel client di posta certificata, la mai non risulta tra quelle inviate.
    Poi, quanto al secondo quesito che avevo proposto? (il secondo file pdf da allegare e identico per ogni mail)
Devi accedere o registrarti per scrivere nel forum
8 risposte