Asp.Net C# inviare posta con Exchange Online e Graph

di il
8 risposte

Asp.Net C# inviare posta con Exchange Online e Graph

Ciao ragazzi, 

Ho una web app che attualmente gira su Azure ed è basata su asp.net, C#, Framework 4.7.2 e Web Form. 

Fino a ora ho usato il client nativo per inviare delle email di notifica che come sapete tutti non è più supportato. 

A questo punto credo sia ovvio che dovrei utilizzare Graph per inviare email. 

Bene, la prima perplessità è data da quale tipo di permissions servirebbero nelle API Graph in Azure: Delegated o Application?
Da quel poco che capito pare che per il mio caso sarebbe meglio application.

Per quanto riguarda il codice non ho trovato in effetti un esempio in C#  (asp.net) che sia applicabile al progetto di cui sopra. 

Avete già avuto esperienze di questo genere? Come avete risolto? 

Grazie 

8 Risposte

  • Re: Asp.Net C# inviare posta con Exchange Online e Graph

    Anche se ci sono magari pochi esempi pronti all'uso, questo articolo mi sembra abbastanza esplicativo: hai provato almeno a scrivere un codice di esempio da testare prendendo spunto dalle risorse esistenti?

  • Re: Asp.Net C# inviare posta con Exchange Online e Graph

    Ciao Alka, 

    Grazie per la risposta.

    Il contesto del tuo link è PowerShell, Con PS ad oggi si può fare anche in maniera più semplice. 

    Il codice di test riesco a farlo andare ma il problema è l'integrazione con web form dove in pratica è uno stop unico :-) 

    Un'altra opzione potrebbe essere sendgrid ma anche qui problemi di integrazione. Mi viene il dubbio sulla effettiva “compatibilità” con .Net 4.7.2.

    Per questo cercavo qualche esperienza vissuta, almeno per capire dove direzionare il “focus” 

  • Re: Asp.Net C# inviare posta con Exchange Online e Graph

    27/12/2022 - andreagx ha scritto:


    Il codice di test riesco a farlo andare ma il problema è l'integrazione con web form dove in pratica è uno stop unico :-) 

    Un'altra opzione potrebbe essere sendgrid ma anche qui problemi di integrazione. Mi viene il dubbio sulla effettiva “compatibilità” con .Net 4.7.2.

    Per questo cercavo qualche esperienza vissuta, almeno per capire dove direzionare il “focus” 

    Non capisco cosa intendi con “stop unico”: qual è il problema o l'errore che si verifica con il codice di test che hai scritto?

  • Re: Asp.Net C# inviare posta con Exchange Online e Graph

    Ciao Andrea

    Sicuro che l'invio email non funzioni più col vecchio protocollo?

    Per il mio software di invio/ricezione email ho dovuto aggiornare solo la parte di ricezione per i nuovi requisiti di Office 365.

    L'invio ho potuto lasciarlo col protocollo precedente poichè Microsoft continua a supportarlo. Se ricordo bene, in prima battuta avevano detto che lo avrebbero dismesso, poi però hanno cambiato idea perchè si sono accorti che ci sono troppi dispositivi che lo usano e non possono essere aggiornati (pensa agli scanner aziendali che mandano i PDF dei documenti scannerizzati via email)

    Quindi ad oggi la ricezione richiede il nuovo protocollo di autenticazione, l'invio dovrebbe funzionare anche col vecchio.

    PS: parlo di applicazioni on-premise che si connettono ad un account di posta Office 365, non so se su applicazioni hostate in Azure sia diverso.

  • Re: Asp.Net C# inviare posta con Exchange Online e Graph

    In realtà, stanno gradatamente disabilitando la basic auth. Lo hanno annunciato da parecchio tempo e da ottobre stanno iniziando il deploy della disattivazione. Anche se si può momentaneamente riattivare è una modifica che va fatta quanto prima.

    On September 1, 2022, we announced there will be one final opportunity to postpone this change. Tenants will be allowed to re-enable a protocol once between October 1, 2022 and December 31, 2022. Any protocol exceptions or re-enabled protocols will be turned off early in January 2023, with no possibility of further use. See the full announcement at Basic Authentication Deprecation in Exchange Online – September 2022 Update.”

    La basic auth anche su smtp avrà vita breve. I device che sono dietro un IP fisso possono essere “autorizzati” al relay tramite dei connettori in EOL. Il problema sono le applicazioni web eseguite nei datacenter dove non puoi create regole basate sugli IP.

  • Re: Asp.Net C# inviare posta con Exchange Online e Graph

    L'articolo che riporti è corretto ma riguarda in particolare la ricezione.

    Per l'invio avevano fatto un articolo ad-hoc dicendo che ancora per un pò supportavano la basic authentication per i problemi di cui sopra.

    Detto questo sono d'accordo con te che prima o poi gestiranno in modo più sicuro anche l'invio, però valuta bene gli impatti del passare da un protocollo POP/SMTP a Graph.

    Per esempio, per la ricezione, basta cambiare la parte di autenticazione e mantenere il protocollo precedente, senza necessità di migrare a Graph. Nella nostra realtà si traduce in cambiare molto meno codice e, soprattutto, mantenere il know-how acquisito sul protocollo precedente.

    Qualora Microsoft in futuro gestisca l'invio in maniera simile alla ricezione (ma attendiamo specifiche in merito), anche in quel caso ci converrà mantenere tutto il pregresso e cambiare solo la parte di autenticazione.

    Detto questo, nessuno ti vieta di passare a Graph a prescindere (in tal caso lascio che siano gli altri ad aiutarti perchè non l'ho mai usato). Ti facevo solo presente che forse potrebbe aver senso attendere indicazioni più specifiche da Microsoft e quindi cambiare solo lo stretto necessario. Però dipende dalle realtà e la tua puoi valutarla solo tu

  • Re: Asp.Net C# inviare posta con Exchange Online e Graph

    In realtà vorrei solo capire come fare con lo scopo di acquisire una nuova competenza, o come si diceva una volta “imparare” :-) 

    Una community mi sembrava il posto più adatto, Non voglio la soluzione chiavi in mano ovviamente.   

  • Re: Asp.Net C# inviare posta con Exchange Online e Graph

    Ovviamente se lo scopo è didattico va benissimo.

    Il mio suggerimento era prevalentemente mirato ad un utilizzo “business” per cercare di salvaguardare il knowhow acquisito negli anni.

    Ad ogni modo, se ti serve qualche indicazione per lo studio, a parte il link postato in precedenza (che però mi sembra più mirato a PowerShell), prova a guardare questo: https://zimmergren.net/sending-e-mails-using-microsoft-graph-using-dotnet/

Devi accedere o registrarti per scrivere nel forum
8 risposte