giovedì 7 maggio 2020

.Net Outlook estrapolare le informazioni da un file PST tramite C# e VB.Net

Si riporta l'articolo scritto per il sito https://www.iprogrammatori.it/articoli/microsoft-office/art_net-estrapolare-le-informazioni-da-un-file-pst-tramite-c-e-vbnet_1648.aspx



In questo articolo vedremo come tramite tecnologia .Net, ed in particolare con i linguaggi di programmazione VB.Net e C#, rileviamo il contenuto di un file PST.
I file .pst, sono quei file di Microsoft Outlook, e quindi posta elettronica, che contengono una casella email.
Vedremo come estrapolare informazioni relativi all’oggetto, mittente, destinatario, e data ricevuto.
Nel caso che dobbiamo creare un progetto di tipo batch ossia che viene schedulato che ogni sera dal server deve leggere i file pst in una cartella, oppure che vorremmo aggiungere ai nostri programmi la funzionalità di lettura dei file di posta elettronica, questo articolo potrà tornare utile.

Creazione del progetto e stesura del codice

Il progetto che andremo a creare è una “Windows Form” ossia programmi eseguibili che permettono di essere lanciati sul proprio pc tramite il doppio click sul file che ha l’estensione .exe.
Tale tecnica si può usare anche per i progetti di tipo web, con opportune modifiche.
Dopo aver aperto Visual Studio, tramite il linguaggio di proprio interesse, selezioniamo la categoria “Desktop di Windows” da qui il modello “Windows Application”.
Dopo aver creato il progetto, inseriamo nella form un pulsante, che al click andrà a leggere nel file “.pst”.
A questo punto dobbiamo aggiungere il riferimento ad Outlook.
In esplora soluzioni, facciamo click con il taso destro sul nome del progetto e dal menu di scelta rapida selezioniamo la voce di menu “Aggiungi” e poi la sotto voce “Riferimenti”.
Nella finestra che viene aperta, selezioniamo la linguetta “COM” e poi la voce “Microsoft Outlook 16 Object Library” dove il numero indica la versione, il tutto come mostrato qui di seguito.


Figura 1 – L’aggiunta di riferimento a Microsoft Outlook.

Dopo averlo selezionato e fatto click sul pulsante “OK”, passiamo in visualizzazione codice della form.
In alto sopra ad ogni dichiarazione, aggiungiamo lo spazio dei nomi per gestire le classi del riferimento appena aggiunto.
Sopra verrà aggiungiamo lo spazio dei nomi.
Qui la dichiarazione delle suddette operazioni.



VB.Net

Imports Microsoft.Office.Interop

Imports System.IO

C#

using Microsoft.Office.Interop;

using System.IO;


Torniamo in visualizzazione codice e facciamo doppio click sul pulsante in modo di passare in visualizzazione codice.
All’evento del pulsante, scriviamo il codice che permette di scrivere in un file log, ossia di testo, che verrà creato, le informazioni riguardante il mittente, destinatario, oggetto e data di ricezione, il tutto solo per l’email della cartella “Folder”.
Le classi che andremo ad utilizzare sono quelle relative alla gestione dell’applicativo (Application) che tramite il metodo “AddStore” carichiamo il file pst, mentre con la classe “MapiFolder” andiamo a leggere le varie cartelle dell’account.
Con la classe “Items” si vanno a gestire tutti gli elementi contenuti nella cartella, che sono appunto le email, al quale tramite un ciclo con la classe “MailItem” estrapoliamo le informazioni richieste.
Qui di seguito la dichiarazione delle suddette operazioni, per entrambi i linguaggi.




VB.Net

Private Sub BtnLeggiPst_Click(sender As Object, e As EventArgs) Handles BtnLeggiPst.Click

        Try

            Dim OutApp As Microsoft.Office.Interop.Outlook.Application = New Microsoft.Office.Interop.Outlook.Application()

            OutApp.Session.AddStore("D:\Elabora.pst")

            Dim CartellaOutlook As Microsoft.Office.Interop.Outlook.MAPIFolder = OutApp.GetNamespace("MAPI").Folders.GetLast()

 

            For Each cartella As Microsoft.Office.Interop.Outlook.MAPIFolder In CartellaOutlook.Folders

                Dim nomeCartella As String = cartella.Name

 

                If nomeCartella.ToLower() = "inbox" Then

                    Dim Elementi As Microsoft.Office.Interop.Outlook.Items = cartella.Items

 

                    For Each ElementoEmail As Microsoft.Office.Interop.Outlook.MailItem In Elementi

                        File.AppendAllText("D:\LogLeggiEmailVB.txt", "Oggetto: " & ElementoEmail.Subject & vbLf & vbCr)

                        File.AppendAllText("D:\LogLeggiEmailVB.txt", "Inviata DA: " & ElementoEmail.SenderName & " - " + ElementoEmail.SenderEmailAddress & vbLf & vbCr)

                        File.AppendAllText("D:\LogLeggiEmailVB.txt", "Spedita A: " & ElementoEmail.[To] & vbLf & vbCr)

                        File.AppendAllText("D:\LogLeggiEmailVB.txt", "Spedita per CCN: " & ElementoEmail.BCC & vbLf & vbCr)

                        File.AppendAllText("D:\LogLeggiEmailVB.txt", "Ricevuta il : " & ElementoEmail.ReceivedTime.ToString() & vbLf & vbCr)

                        File.AppendAllText("D:\LogLeggiEmailVB.txt", "*********************************************************" & vbLf & vbCr)

                    Next

 

                    Return

                End If

            Next

 

        Catch ex As Exception

            MessageBox.Show("Errore: " & ex.Message)

        End Try

    End Sub

 

C#

private void BtnLeggiPst_Click(object sender, EventArgs e)

        {

            try

            {

                Microsoft.Office.Interop.Outlook.Application OutApp = new Microsoft.Office.Interop.Outlook.Application();

                OutApp.Session.AddStore("D:\\Elabora.pst");

                Microsoft.Office.Interop.Outlook.MAPIFolder CartellaOutlook = OutApp.GetNamespace("MAPI").Folders.GetLast();

                foreach (Microsoft.Office.Interop.Outlook.MAPIFolder cartella in CartellaOutlook.Folders)

                {

                    string nomeCartella = cartella.Name;

                    if (nomeCartella.ToLower() == "inbox")

                    {

                        Microsoft.Office.Interop.Outlook.Items Elementi = cartella.Items;

                      

                      

 

                        foreach (Microsoft.Office.Interop.Outlook.MailItem ElementoEmail in Elementi)

                        {

                            

                            File.AppendAllText("D:\\LogLeggiEmail.txt", "Oggetto: " + ElementoEmail.Subject + "\n\r");

                            File.AppendAllText("D:\\LogLeggiEmail.txt", "Inviata DA: " + ElementoEmail.SenderName + " - " + ElementoEmail.SenderEmailAddress + "\n\r");

                            File.AppendAllText("D:\\LogLeggiEmail.txt", "Spedita A: " + ElementoEmail.To + "\n\r");

                            File.AppendAllText("D:\\LogLeggiEmail.txt", "Spedita per CCN: " + ElementoEmail.BCC + "\n\r");

                            File.AppendAllText("D:\\LogLeggiEmail.txt", "Ricevuta il : " + ElementoEmail.ReceivedTime.ToString() + "\n\r");

                            File.AppendAllText("D:\\LogLeggiEmail.txt", "*********************************************************" + "\n\r");

 

                          

                        }

                        return;

 

                    }

 

                  

                }

 

 

            }

            catch (Exception ex)

            {

                MessageBox.Show("Errore: " + ex.Message);

            }

          

 

        }







Conclusioni

L’articolo ha voluto fornire informazioni e le basi per lavorare sui file di posta elettronica Microsoft Outlook, quelli con estensione “.pst” al quale possiamo rilevare informazioni utili sull’email che si trovano nella posta in arrivo.
Dati informazioni sui singoli elementi come oggetto, mittenti, destinatari e data di ricezione, ma che possiamo estendere.

mercoledì 6 maggio 2020

Asp.Net Core MVC visualizzare immagine da array byte

Il frammento di codice qui di seguito, illustra una tecnica di come visualizzare in una pagina Asp.Net MVC Core un'immagine da un array di byte.

cshtml

@model byte[]

 if (Model != null)
            {
                //visualizzo l'immagine
                <img src="@String.Format("data:image/png;base64,{0}", Convert.ToBase64String(Model))" height="300" width="300" />
            }

martedì 5 maggio 2020

Creare una nuova istanza di SqlLocalDB ed avviare la stessa istanza.

Nel caso che abbiamo installato LocalDB su un pc, e vogliamo creare una determinata istanza, per esempio "MiaIstanza" qui di seguito il comando da CMD per crearla e per avviarla.

Creazione:

SqlLocalDB.exe create MiaIstanza

Avviarla:

SqlLocalDB.exe  start MiaIstanza

lunedì 4 maggio 2020

Download ebook gratuito App Modernization on Azure

App Modernization on Azure Succinctly


Un ebook di circa 120 pagine per avvicinare il lettore alla realizzazione di applicazioni su architettura Azure.
Il libro si può scaricare gratuitamente previa registrazione gratuita sul sito ed è in lingua inglese su file pdf per pc o per lettori reader.
Per il download e maggiori informazioni visitate il seguente sito https://www.syncfusion.com/ebooks/app-modernization-on-azure-succinctly

domenica 3 maggio 2020

GruppoISP gentile cliente gruppo ISP abbiamo riscontrato un allert




Oggi parliamo di un nuovo fenomeno di truffa, di ricevere sms, da un mittente denominato GruppoISP con un testo simile a "Gentile Cliente Gruppo ISP abbiamo riscontrato un allert sul suo conto per evitare sospensioni compili il form…." con un sito.
Chiaramente è un inganno che la persona potrebbe essere truffata. In questo caso, cancellate il messaggio e non fate click sul sito.

Asp.Net MVC Core visualizzare un immagine da percorso fisico

Nel caso che vogliamo visualizzare a video una nostra immagine situata in un percorso, per esempio nella cartella immagini del nostro sito Asp.Net MVC Core, dovremmo utilizzare Url.Content passando come parametro percorso e nome file file immagine.
Qui di seguito si riporta di codice.

<img class="img" src="@Url.Content("/Immagini/immagine.jpg")" />

sabato 2 maggio 2020

Download gioco gratuito crashlands





Un gioco adatto a tutti per sistemi operativi Windows, parliamo di Crashlands scaricabile gratuitamente e senza limitazioni dal seguente sito https://www.epicgames.com/store/it/product/crashlands/home

Il gioco è scaricabile fino al 07 maggio 2020, per maggiori informazioni e download visitate il sito indicato.

Salvare le immagini di sfondo del blocco schermata di Windows 10

Nel caso che vogliamo trovare le immagini che troviamo durante il blocco di schermata di Windows 10, queste si trovano in una cartella del sistema operativo, senza estensione.

Per trovare i file ed aprire la cartella, sotto, nella casella di ricerca scrivete il seguente comando

%LocalAppData%\Packages\Microsoft.Windows.ContentDeliveryManager_cw5n1h2txyewy\LocalState\Assets

A questo punto verrà aperta un suggerimento di apertura cartella e fate click sul suggerimento.
Una volta entrati nella cartella, saranno presenti dei file senza estensione, copiateli in una vostra cartella, e rinominateli (alcuni o tutti) con estensione ".jpg".
A questo punto vedrete in anteprima l'immagine.

venerdì 1 maggio 2020

Download grautito del gioco Amnesia: The Dark Descent



Fino al 7 aprile 2020 è possibile scaricare gratuitamente il gioco Amnesia, in lingua italiana e per sistemi operativi Windows.
Il gioco è per un pubblico maggiore, per maggiori informazioni ed altro visitate il seguente sito https://www.epicgames.com/store/it/product/amnesia-the-dark-descent/home

Download programma gratuito grafica 3D sculptris





Se state cercando un ottimo programma di grafica 3D e gratuito, il software sculptris.
Il programma in lingua inglese offre la creazione di immagini in 3 dimensioni.
Per il download e maggiori informazioni visitate il seguente sito http://pixologic.com/sculptris/

giovedì 30 aprile 2020

.Net gestire il database Microsoft Access con VB.Net e C#

Si riporta l'articolo scritto per il sito https://www.iprogrammatori.it/articoli/microsoft-net-framework/art_net-la-gestione-del-database-microsoft-access-2016-tramite-vbnet-c_1677.aspx


In questo articolo vedremo come gestire tramite un progetto di tipo “Windows Form” una base dati di 3 tabelle creata con il database Microsoft Access 2016.
Vedremo le operazioni più comuni, quali selezione, inserimento, modifica e cancellazione dei dati, in modo che si ha una panoramica completa su come realizzare applicazioni di tipo “Windows Application” con le funzionalità più comuni.
Nell’articolo saranno affrontati temi legati al database con l’utilizzo dei linguaggi più famosi ed utilizzati, quali Visual Basic Net e C#.
Creazione della base dati
Prima di realizzare il nostro progetto di tipo “Windows Application” si deve creare un database di Access.
Dopo aver aperto Microsoft Access 2016, selezioniamo tra i modelli “Database Vuoto” come mostrato in figura 1.




Figura 1 – La finestra principale

Dopo aver fatto click sul pulsante “Database Vuoto” verrà visualizzata una nuova finestra, il tutto come mostrato in figura 2.




Figura 2 – La finestra per la creazione del database

Impostiamo nella casella del “nome file” il valore “Dati”, mentre come percorso ci posizioniamo nella root del nostra unità, ossia “C:\” quella più comune ed in tale posizione si crea una nuova cartella denominata “Dati”, a questo punto facciamo click sul pulsante “Crea”.
Per impostare il percorso dobbiamo fare click sull’icona della cartella.
Nella finestra che viene aperta (figura 3) verrà visualizzata la possibilità di definire una prima tabella.



Figura 3 – Il database con modalità di creare una prima tabella.

Facciamo click sul pulsante “Visualizza” E poi struttura, verrà visualizzata una casella a video con il quale ci chiede di impostare un nome per la tabella, inseriamo come valore “Ordini”.
A questo punto confermate tramite il pulsante “OK”.
Ci visualizza la struttura della tabella con una colonna già creata denominata “ID” di tipo contatore e chiave (figura 4)
Nella casella di sotto, scriviamo i nostri campi, quello di relazione con le fatture, che chiameremo “Idfattura” e sarà di tipo “Numerico”, un altro campo, denominato “Descrizione” di tipo “Testo breve” con il quale andremo a scrivere la descrizione dei pezzi”.
Altri campi saranno, uno denominato “Quantita” e sarà di tipo “numerico”, un altro campo sarà denominato “Prezzo” e sarà di tipo “Valuta”, un campo denominato “Imponibile” che è il prezzo moltiplicato i pezzi, anch’esso di tipo “Valuta”, un campo “Iva” con il quale si andrà a colare l’importo dell’iva, anch’esso sarà di tipo “Valuta” ed infine un campo denominato “TotaleFattura” di tipo “Valuta”, il tutto come mostrato in figura 4.



Figura 4 – La struttura della tabella ordini.

Salviamo le modiche tramite il pulsante del dischetto situato in alto.
Ora andiamo a creare una tabella denominata “Clienti”, che metteremo in relazione con la tabella fattura.
Per creare una nuova tabella, dal menu di Microsoft Access, cliccare sulla voce “Crea” e poi nel menu che viene aperto “Tabella”.
Anche in questo caso, verrà visualizzata la modalità “Foglio Dati” che invece porteremo in modalità struttura, come visto in precedenza.
Oltre al campo id, dobbiamo creare altri campi in particolare un campo denominato “Denominazione” il quale conterrà il nome dei clienti, di tipo “Testo breve” , un campo denominato indirizzo, anch’esso di tipo “Testo Breve”, un campo denominato “Citta” di tipo “Testo breve” ed infine un campo denominato “Telefono” di tipo “Testo Breve”.
Il tutto sarà come mostrato in figura 5.





Figura 5 – La definizione della tabella Clienti

Ora non resta che creare l’ultima tabella, quella relativa alla fattura che andrà a relazionarsi con le due tabelle create in precedenza.
La tabella fattura, sarà quella che visualizzerà i dati e le informazioni relativi all’acquisto di un determinato prodotto.
Sempre dal menu di Microsoft Access, facciamo click sulla voce “Crea” e selezioniamo la voce “Tabella” tra le varie voci.
Anche in questo caso passiamo in visualizzazione struttura e nella casella che ci chiede il nome della tabella, impostiamo il nome “Fatture”.
Oltre al campo ID di tipo chiave e contatore, che viene imposto automaticamente dal sistema, come avvenuto per le precedenti tabelle, aggiungiamo un nuovo campo denominato “IdOrdini” di tipo “numerico”, un campo denominato “IDClienti” di tipo “Numerico”, un campo denominato “NumeroFattura” di tipo “numerico” nel quale andrà inserito il numero della fattura, un campo denominato “DataFattura” di tipo “Data”, un campo denominato “Consegna” di tipo “Testo breve” ed infine un campo denominato “Note” di tipo “Testo lungo”.
Queste informazioni saranno quelle che raccolgono i dati che verranno visualizzati all’utente che utilizzerà il programma.
La tabella sarà come quella riportata in figura 6.




Figura 6 - La struttura della tabella

Conclusioni

Si conclude in questa prima parte la creazione del programma gestionale per la gestione dei dati tramite il database Microsoft Access, utilizzando la tecnologia .Net in particolare “Windows Application” con il quale vedremo nei prossimi articolo come accedere al database per estrapolare le informazioni, aggiungere, modificare e cancellare i dati.
La struttura di una base dati è una fase molto importante, perché sono le fondamenta di ogni applicativo, realizzarla male o correggerla durante la fase di creazione del programma, comporta tempi più lunghi di realizzo e soprattutto difficoltà nel procedere. Per questo è importante spendere più tempo nella progettazione e creazione della base, perché se il lavoro è ben fatto ci ritroveremo attività di sviluppo semplificato.

mercoledì 29 aprile 2020

Error Entity Framework to SQlite wizard designer

Utilizzando Entity Framework con il database SQlite può verificarsi un problema durante il Wizard in particolare nel momento in cui si devono selezionare le tabelle.
Se l'errore è


Errore durante la connessione al database. È possibile che il database non sia disponibile. Eccezione di tipo 'System.InvalidCastException'. Messaggio di errore: 'Impossibile eseguire il cast di [A]System.Data.SQLite.SQLiteConnection a [B]System.Data.SQLite.SQLiteConnection. Il tipo A ha origine da 'System.Data.SQLite, Version=1.0.112.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139' nel contesto 'Default' nella posizione 'C:\WINDOWS\Microsoft.Net\assembly\GAC_32\System.Data.SQLite\v4.0_1.0.112.0__db937bc2d44ff139\System.Data.SQLite.dll'. Il tipo B ha origine da 'System.Data.SQLite, Version=1.0.112.1, Culture=neutral, PublicKeyToken=db937bc2d44ff139' nel contesto 'LoadNeither' nella posizione 'C:\Users\nomeutente\AppData\Local\Microsoft\VisualStudio\16.0_3a1cb104\ProjectAssemblies\qw4nevj901\System.Data.SQLite.dll'.'.





La causa può essere il mancato riferimento della libreria "EntityFramework" che dovremmo sostituire con quella che abbiamo installato con il pacchetto di SqlLite dal seguente sito https://system.data.sqlite.org/index.html/doc/trunk/www/downloads.wiki

La soluzione riguarda quella di togliere come riferimento  le dll "System.Data.SQLite" , "System.Data.SQLite.EF6", "System.Data.SQLite.Linq" dal progetto, ed aggiungere il riferimento nel percorso dove abbiamo installato il pacchetto nel mio caso qui "C:\Program Files (x86)\System.Data.SQLite\2015\bin" selezionando come dll "System.Data.SQLite" , "System.Data.SQLite.EF6", "System.Data.SQLite.Linq" , mentre entity  .
Dopo averla aggiunta, compilare il programma e aggiungiamo un nuovo elemento di tipo "Ado.Net Entity Data Model" a questo punto sarà possibile visualizzare le tabelle del database, come nella seguente figura.






martedì 28 aprile 2020

Componente Entity Framework per Sqlite

Dopo aver istallato il componente SQLite/SQL Server Compact Toolbox scaricabile qui https://marketplace.visualstudio.com/items?itemName=ErikEJ.SQLServerCompactSQLiteToolbox dobbiamo installare un componente per gestire il wizard di Entity Framework per il database Sqlite dal sito ufficiale qui https://system.data.sqlite.org/index.html/doc/trunk/www/downloads.wiki
Nel momento in cui si sta scrivendo, il componente è il seguente "sqlite-netFx46-setup-bundle-x86-2015-1.0.112.0.exe" nella categoria "Setups for 32-bit Windows (.NET Framework 4.6)" , in questo modo possiamo gestire in maniera visuale il database. L'installazione dei file vanno impostati nella GAC quindi nelle opzioni della finestra di installazione selezionare tutte le opzioni.
Per accertarci che abbiamo installatore correttamente il componente, nella toolbox della gestione del database, dobbiamo fare click sull'icona "informazioni" in modo da visualizzare la finestra qui di seguito.


La voce Sqlite EF6 DbProvider in GAC dev'essere impostato su "yes", altrimenti non sarà possibile utilizzare il Wizard.



lunedì 27 aprile 2020

Download SQLite/SQL Server Compact Toolbox componente gratuito per gestire i databse Sqlite e Sql Server Compact




Dal seguente sito https://marketplace.visualstudio.com/items?itemName=ErikEJ.SQLServerCompactSQLiteToolbox  la possibilità di scaricare gratuitamente un componente per la gestione dei database Sqlite e Sql Server Compact .
Per il download e maggiori informazioni visitate il sito indicato.

domenica 26 aprile 2020

Portale sul fai da te e riciclo

Instructables


Il seguente sito https://www.instructables.com/ in lingua inglese, offre una serie di tutorial riguardante il riciclo e del fai da te con tanti esempi reali e soprattutto in vari ambiti.
Nel sito sono presenti numerosi tutorial aggiornato costantemente.
Tramite il box posto in alto destra si possono fare delle ricerche, naturalmente inserendo termini in inglese.

sabato 25 aprile 2020

Download gratuito gioco For The King




Un gioco di strategia scaricabile gratuitamente fino al 30 aprile 2020 quello relativo a For The King.
Un gioco in italiano e per sistema operativo Windows.
Per il download e maggiori informazioni vistate il seguente sito  https://www.epicgames.com/store/it/product/for-the-king/home