[Esempio]Inviare Email tramite Calc

Rispondi
Avatar utente
unlucky83
Volontario
Volontario
Messaggi: 2355
Iscritto il: lunedì 7 gennaio 2013, 1:23
Località: Latina

[Esempio]Inviare Email tramite Calc

Messaggio da unlucky83 »

inviare email ( con o senza allegati ) a una serie
di destinatari, con la possibilità di sfruttare un Body-
message predefinito formattato mediante codice html, senza
l’impiego di un Client di Posta Elettronica

Questo tutorial prende vita a seguito della discussione aperta sul forum italiano di openoffice
( discussione completa viewtopic.php?f=26&t=7748 ).
Target
Inviare periodicamente a N destinatari, una email con allegato un pdf il cui nome è
strutturato pressapoco in questa maniera “nome_destinatario aaaa.mm.gg.pdf”. Questi
pdf sono suddivisi in sottocartelle, una per ogni destinatario e non sempre tutti i
destinatari dovranno ricevere l’email, ciò accadrà solamente quando è stato preparato
il relativo documento pdf da spedirgli.
La richiesta iniziale si può sintetizzare dicendo “invia email con allegato a quei
destinatari per cui esiste il documento pdf da allegare, per i destinatari per cui non
esiste il pdf non inviare alcun messaggio”.
Per ogni email si vuole impostare lo stesso oggetto e lo stesso body-message.
Traguardo raggiunto
Oltre a soddisfare la richiesta, si è giunto ad un file calc che tramite macro consente:
• di inviare anche email senza allegati per consentire comunicazioni per
semplici avvisi
• cercare i pdf da allegare ricercando nelle cartelle i pdf il cui nome termina in
“chiave_ricerca.pdf”, potendo impostare il valore di “chiave_ricerca” nel file
• all’email possono essere allegati anche più di una email se rispettano il
criterio di ricerca
• inviare email con un body-message che sfrutti il codice html per formattare il
messaggio, anche diverso per ciascun destinatario
• inviare email con body-message di default salvato in un cella F2 e in
alternativa in file html esterno denominato “msg_Default.html”
• l’oggetto può essere impostato per ciascun destinatario in maniera distinta
• l’invio viene effettuato senza l’impiego di client di posta elettronica, quindi
non è richiesta alcuna istallazione e configurazione del client
• c’è la possibilità di impostare un tempo di ritardo (nella macro) per evitare
errori di server occupato quando si usano alcuni domini capricciosi.
A questo link trovate un pdf dove viene spiegato tutto (o quasi) nei "minimi" dettagli ( o quasi).
Il diagramma a blocchi seguente, rappresenta a grandi linee la logica della macro (in realtà più di una)
LogicaMacro.jpg
Ciò che caratterizza il file, è la possibilità di inviare email anche nei casi in cui non si disponesse di un client installato sul dispositivo. Questo avviene grazie al servizio "MailServiceProvider" e più in generale a tutto ciò che offre ""com.sun.star.mail":

Codice: Seleziona tutto

serviceProvider = createUNOService("com.sun.star.mail.MailServiceProvider")
service = serviceProvider.Create("com.sun.star.mail.SMTP")
Nel file che allego in fondo a questo messaggio, trovate le macro che permettono di effettuare l'invio multiplo di email, con o senza allegato/i. Per chi usa Openoffice, c'è solo un problemino, non funziona correttamente la possibilità di impostare il body_message da un file esterno per problemi di codifica utf-8 e ascii. Per l'esattezza, nella macro si è fatto uso del servizio "com.sun.star.ucb.SimpleFileAccess" per aprire i file esterni e a quanto pare Libreoffice è impostato sulla codifica utf-8, mentre Openoffice no, ciò causa l'errore con openoffice.
Il sistema operativo su cui gira al 100% è linux, mentre su altri sistemi operativi forse ha bisogno di qualche messa a punto.
Allego anche un file zip contenente cartelle di esempio strutturate in modo che le macro funzionino correttamente, da prendere come modello. Le cartelle contengono anche dei pdf di prova, per testare gli invii di allegati.
Il file zip contiene anche un file html, impiegato come body-message predefinito. E' in html per permettere di inserire un body formattato. Non è da escludere che possa funzionare anche inserire come corpo del messaggio altri tipi di file (immagini, pdf..)
Il codice html è ricavabile tramite Writer in modo semplice e indolore. Dopo aver preparato il vostro messaggio, cliccare su File > anteprima browser web, poi basta visualizzare il file sorgente, copiarlo e incollarlo in un nuovo documento da salvare con estensione html.

Se trovate difetti utilizzandolo sulla vostra macchina e non ne venite a capo, aggiungete un commento qui di seguito. Anche segnalare che tutto funzioni sarebbe gradito. Basta ricordarsi di indicare numero della versione, se si tratta di Libreoffice o di Openoffice e su quale sistema operativo lo eseguite. ;)

p.s.
https://www.openoffice.org/api/docs/com ... eType.html Sarebbe interessante aggiungere esempi di utilizzo di POP3 e IMAP
 Editato: Discussioni simili le trovate ai link seguenti
viewtopic.php?f=9&t=5226&hilit=+mail#p25610
viewtopic.php?f=9&t=6833#p35671 
 Editato: Come inviare tramite client.Discussioni utili:
viewtopic.php?f=26&t=5914&hilit=email#p29778
viewtopic.php?f=9&t=5183&hilit=email#p25244 
Allegati
InviaAllegati_NoClient.ods
(30.08 KiB) Scaricato 498 volte
Progetto Invio.zip
(157.04 KiB) Scaricato 448 volte
LibO:Versione: 6.2.8.2
Build ID: 1:6.2.8~rc2-0ubuntu0.16.04.1- 32-bit
-
Se risolvi:
1. Condividi la soluzione qui con noi
2. Metti [Risolto] al titolo del primo messaggio come spiegato qui