Integrazione di MailKit con il servizio di consegna tramite e-mail

Utilizzare MailKit per inviare e-mail tramite il servizio di consegna tramite e-mail.

Configurare MailKit per l'invio di e-mail tramite il servizio di consegna tramite posta elettronica

MailKit è un framework di posta elettronica multipiattaforma open source per le applicazioni .NET. Poiché SmtpClient non è più un approccio consigliato per inviare messaggi di posta elettronica nelle applicazioni .NET, è possibile utilizzare MailKit per inviare e ricevere messaggi di posta elettronica tramite il servizio di consegna tramite posta elettronica. Prima di utilizzare MailKit, impostare un codice MailKit di esempio e testarlo con la configurazione del servizio di consegna tramite e-mail.

Importante

Le seguenti istruzioni contengono un codice di esempio per comodità e devono essere utilizzate come riferimento.

Per impostare il codice di esempio MailKit ed eseguire il test della configurazione del servizio di consegna tramite e-mail:

  1. Assicurarsi che Email Delivery sia configurato per l'invio di e-mail. Vedere Guida introduttiva.

    Nota

    Le credenziali SMTP sono necessarie per configurare MailKit in modo che utilizzi il servizio di consegna tramite e-mail. Assicurarsi di prendere nota del nome utente e della password quando si generano le credenziali SMTP.

  2. Per creare un progetto in Visual Studio Code:

    1. Creare uno spazio di progetto creando una cartella con il nome OCIEmail.
    2. Aprire la cartella OCIEmail in VS Code File > Apri cartella.
    3. Aprire la finestra di terminale (ctrl + ~).
    4. Per creare il modello di progetto e aggiungere la dipendenza di MailKit, eseguire i comandi seguenti nel terminale.
      dotnet new console --framework net6.0
      dotnet add package MailKit --version 2.15.0 

      Espandere il progetto nella finestra VS Code Explorer.

  3. Sostituire il contenuto del file Program.cs con il blocco di codice seguente:
    using System;
    
    using MailKit.Net.Smtp;
    using MailKit.Security; // Required for SecureSocketOptions when using port 25 or 587.
    using MailKit;
    using MimeKit;
    
    namespace Program {
        class TestOCIEmail
        {
            public static void Main (string[] args)
            {
                var message = new MimeMessage ();
                message.From.Add (new MailboxAddress ("<FROM NAME>", "<FROM>"));
                message.To.Add (new MailboxAddress ("<TO NAME>", "<TO>"));
                message.Subject = "Mail from OCI ED service";
    
                message.Body = new TextPart ("Html") {
                    Text = @"
                    <h1>OCI Email Delivery test</h1>
                    <p>This email was sent with OCI Email Delivery using the 
                    <a href='https://github.com/jstedfast/MailKit'>MailKit Package</a>
                    for .Net .</p>"
                };
    
                using (var client = new SmtpClient ()) {
    
                    var host = "<HOST>";
                    var port = 465; // Use port numbers 25, 587, or 465.
                    var username = "<smtp username>";
                    var password = "<smtp password>";
                    
                    // --- Connection Options ---
                    // For port 465 (SSL/TLS):
                    // Connect using SSL/TLS by setting 'useSsl' to true.
                    client.Connect(host, port, true);
    
                    /*
                    // For port 25 or 587 (STARTTLS):
                    // Connect with STARTTLS option instead of SSL/TLS.
                    client.Connect(host, port, SecureSocketOptions.StartTls);
                    */
                                                
                    client.Authenticate (username, password);
                    client.Send (message);
                    client.Disconnect (true);
                }
               Console.WriteLine("Email sent successfully !!");
            }
        }
    }
    

    Linee guida importanti:

    • Se si utilizza la porta 465:

      Utilizzare client.Connect(host, port, true) per una connessione SSL/TLS diretta.

    • Se si utilizza la porta 25 o 587:

      Usare client.Connect(host, port, SecureSocketOptions.StartTls).

      Assicurati di avere using MailKit.Security; in alto.

  4. Sostituire i seguenti parametri con i propri valori nel file Program.cs:
    1. FROM - Sostituisci con il tuo indirizzo email del mittente. Assicurarsi che questo indirizzo e-mail venga aggiunto all'elenco Mittenti approvati in Consegna tramite e-mail.
    2. TO - Sostituire con l'indirizzo e-mail del destinatario.
    3. Credenziali SMTP: sostituire <smtp username> e <smtp password> con il nome utente e la password SMTP di Oracle Cloud Infrastructure generati nella console.
    4. HOST - Sostituisci con l'endpoint SMTP del servizio di consegna tramite e-mail. Ad esempio, smtp.us-ashburn-1.oraclecloud.com.
  5. Salvare le modifiche ed eseguire il comando seguente per inviare la posta:
    dotnet run
  6. Esaminare l'output. Se il messaggio e-mail viene inviato correttamente, nella console viene visualizzato il messaggio Invio del messaggio e-mail riuscito. Altrimenti, viene visualizzato un messaggio di errore.
  7. Eseguire il login alla posta in arrivo del destinatario per verificare la ricezione del messaggio.