Come inviare messaggi di posta elettronica usando SendGrid da Java

Questa guida illustra come eseguire attività di programmazione comuni con il servizio di posta elettronica SendGrid in Azure. Gli esempi sono scritti in Java. Gli scenari presentati includono creazione di messaggi di posta elettronica, invio di messaggi di posta elettronica, aggiunta di allegati, uso di filtri e aggiornamento delle proprietà. Per altre informazioni su SendGrid e sull'invio di messaggi di posta elettronica, vedere la sezione Passaggi successivi .

Informazioni sul servizio di posta elettronica SendGrid

SendGrid è un servizio di posta elettronica basato sul cloud che offre recapito affidabile di messaggi di posta elettronica transazionali, scalabilità e analisi in tempo reale, oltre ad API flessibili che agevolano l'integrazione personalizzata. Gli scenari di utilizzo comuni di SendGrid includono:

  • Invio automatico di ricevute ai clienti
  • Amministrazione di liste di distribuzione per l'invio mensile ai clienti di volantini elettronici e offerte speciali
  • Raccolta di metriche in tempo reale per elementi quali indirizzi di posta elettronica bloccati e velocità di risposta al cliente
  • Generazione di report per agevolare l'identificazione delle tendenze
  • Inoltro di richieste dei clienti
  • Notifiche di posta elettronica dall'applicazione

Per altre informazioni, visitare il sito http://sendgrid.com.

Creare un account SendGrid

I clienti di Azure possono sbloccare 25.000 messaggi di posta elettronica gratuiti ogni mese. Questi 25.000 messaggi gratuiti mensili offrono l'accesso a funzionalità avanzate di creazione di report e analisi e a tutte le API (Web, SMTP, Event, Parse e altre). Per informazioni sui servizi aggiuntivi offerti da SendGrid, vedere la pagina delle soluzioni di SendGrid.

Per iscriversi a un account SendGrid

  1. Accedere al portale di gestione di Azure.
  2. Fare clic su Nuovo dal menu a sinistra.

    command-bar-new

  3. Fare clic su Componenti aggiuntivi e quindi SendGrid Email Delivery (Recapito email di SendGrid).

    sendgrid-store

  4. Completare il modulo di iscrizione e selezionare Crea.

    creazione di SendGrid

  5. Immettere un nome per identificare il proprio servizio SendGrid nelle impostazioni di Azure. I nomi devono essere composti da un numero di caratteri compreso tra 1 e 100 e possono includere solo caratteri alfanumerici, trattini, punti e caratteri di sottolineatura. Il nome deve essere univoco nell'elenco di elementi di Azure Store sottoscritti.
  6. Immettere e confermare la password.
  7. Scegliere la propria sottoscrizione.
  8. Creare un nuovo gruppo di risorse o selezionarne uno esistente.
  9. Nella sezione Piano tariffario selezionare il piano di SendGrid a cui si desidera iscriversi.

    prezzi di SendGrid

  10. Se disponibile, immettere un codice di promozione.
  11. Inserire le informazioni di contatto.
  12. Riesaminare e accettare le Note legali.
  13. Dopo aver confermato l'acquisto verrà visualizzato un popup che indica che la distribuzione è riuscita e il proprio account verrà elencato nella sezione Tutte le risorse.

    all-resources

    Dopo avere completato l'acquisto e avere fatto clic sul pulsante Gestisci per avviare il processo di verifica dei messaggi di posta elettronica, SendGrid invierà un'email in cui si chiede di verificare l'account. Se non si riceve questa email o se si hanno problemi nella verifica dell'account, consultare le domande frequenti.

    manage

    È possibile inviare fino a 100 email al giorno fino a quando non si è verificato l'account.

    Per modificare il piano di sottoscrizione o visualizzare le impostazioni di contatto di SendGrid, fare clic sul nome del servizio SendGrid per aprire il dashboard del Marketplace di SendGrid.

    Impostazioni

    Per inviare un'email tramite SendGrid, è necessario specificare la chiave API.

Per trovare la chiave API per SendGrid

  1. Fare clic su Manage.

    manage

  2. Nel dashboard di SendGrid, selezionare Impostazioni e quindi Chiavi API nel menu a sinistra.

    chiavi API

  3. Fare clic sul menu a discesa Crea chiave API e selezionare General API Key (Chiave API generale).

    chiave API generale

  4. Indicare almeno il nome di questa chiave e garantire l'accesso completo a Mail Send (Invio email) e selezionare Salva.

    access

  5. L'API verrà visualizzata una sola volta a questo punto. Assicurarsi di salvarla in modo sicuro.

Per individuare le credenziali di SendGrid

  1. Fare clic sull'icona della chiave per trovare il nome utente.

    key

  2. La password è quella specificata al momento della configurazione. È possibile selezionare Cambia password o Reimposta password per apportare modifiche.

Per gestire le impostazioni di recapito della posta, fare clic sul pulsante Gestisci. Si verrà reindirizzati al dashboard di SendGrid.

![manage][manage]

For more information on sending email through SendGrid, visit the [Email API Overview][Email API Overview].

Procedura: Usare le librerie javax.mail

Ottenere le librerie javax.mail, ad esempio da http://www.oracle.com/technetwork/java/javamail e importarle nel codice. Ad alto livello, la procedura per usare la libreria javax.mail per l'invio di messaggio di posta elettronica mediante SMTP è la seguente:

  1. Specificare i valori SMTP, compreso il server SMTP, che per SendGrid è smtp.sendgrid.net.
        import java.util.Properties;
        import javax.activation.*;
        import javax.mail.*;
        import javax.mail.internet.*;

        public class MyEmailer {
           private static final String SMTP_HOST_NAME = "smtp.sendgrid.net";
           private static final String SMTP_AUTH_USER = "your_sendgrid_username";
           private static final String SMTP_AUTH_PWD = "your_sendgrid_password";

           public static void main(String[] args) throws Exception{
               new MyEmailer().SendMail();
           }

           public void SendMail() throws Exception
           {
              Properties properties = new Properties();
                 properties.put("mail.transport.protocol", "smtp");
                 properties.put("mail.smtp.host", SMTP_HOST_NAME);
                 properties.put("mail.smtp.port", 587);
                 properties.put("mail.smtp.auth", "true");
                 // …
  1. Estendere la classe javax.mail.Authenticator e nella propria implementazione del metodo getPasswordAuthentication restituire il nome utente e la password di SendGrid.

    private class SMTPAuthenticator extends javax.mail.Authenticator {
    public PasswordAuthentication getPasswordAuthentication() {
       String username = SMTP_AUTH_USER;
       String password = SMTP_AUTH_PWD;
       return new PasswordAuthentication(username, password);
    }
    
  2. Creare una sessione di posta autenticata mediante un oggetto javax.mail.Session .

    Authenticator auth = new SMTPAuthenticator();
    Session mailSession = Session.getDefaultInstance(properties, auth);
    
  3. Creare il messaggio e assegnare i valori relativi ai campi A, Da, Oggetto e contenuto. Questa operazione è illustrata nella sezione Procedura: Creare un'e-mail .
  4. Inviare il messaggio tramite un oggetto javax.mail.Transport . Questa operazione è illustrata nella sezione [Procedura: Inviare un messaggio di posta elettronica].

Procedura: Creare un messaggio di posta elettronica

Il codice seguente illustra come specificare i valori per un messaggio di posta elettronica.

MimeMessage message = new MimeMessage(mailSession);
Multipart multipart = new MimeMultipart("alternative");
BodyPart part1 = new MimeBodyPart();
part1.setText("Hello, Your Contoso order has shipped. Thank you, John");
BodyPart part2 = new MimeBodyPart();
part2.setContent(
    "<p>Hello,</p>
    <p>Your Contoso order has <b>shipped</b>.</p>
    <p>Thank you,<br>John</br></p>",
    "text/html");
multipart.addBodyPart(part1);
multipart.addBodyPart(part2);
message.setFrom(new InternetAddress("john@contoso.com"));
message.addRecipient(Message.RecipientType.TO,
   new InternetAddress("someone@example.com"));
message.setSubject("Your recent order");
message.setContent(multipart);

Procedura: Inviare un messaggio di posta elettronica

Il codice seguente illustra come inviare un messaggio di posta elettronica.

Transport transport = mailSession.getTransport();
// Connect the transport object.
transport.connect();
// Send the message.
transport.sendMessage(message, message.getAllRecipients());
// Close the connection.
transport.close();

Procedura: Aggiungere un allegato

Il codice seguente illustra come aggiungere un allegato.

// Local file name and path.
String attachmentName = "myfile.zip";
String attachmentPath = "c:\\myfiles\\";
MimeBodyPart attachmentPart = new MimeBodyPart();
// Specify the local file to attach.
DataSource source = new FileDataSource(attachmentPath + attachmentName);
attachmentPart.setDataHandler(new DataHandler(source));
// This example uses the local file name as the attachment name.
// They could be different if you prefer.
attachmentPart.setFileName(attachmentName);
multipart.addBodyPart(attachmentPart);

Procedura: Usare filtri per abilitare piè di pagina, monitoraggio e analisi

SendGrid fornisce funzionalità di posta elettronica aggiuntive attraverso l'utilizzo di filtri. Si tratta di impostazioni che è possibile aggiungere a un messaggio di posta elettronica per abilitare funzionalità specifiche, ad esempio il monitoraggio del clic, Google Analytics, il monitoraggio delle sottoscrizioni e così via. Per un elenco completo dei filtri, vedere le impostazioni dei filtri.

  • Il codice seguente illustra come inserire un filtro per piè di pagina che provoca la visualizzazione di testo in formato HTML in fondo al messaggio di posta elettronica inviato.

    message.addHeader("X-SMTPAPI",
        "{\"filters\":
        {\"footer\":
        {\"settings\":
        {\"enable\":1,\"text/html\":
        \"<html><b>Thank you</b> for your business.</html>\"}}}}");
    
  • Un altro esempio di filtro è quello per il monitoraggio dei clic. Si supponga ad esempio che il testo del messaggio di posta elettronica contenga un collegamento ipertestuale come il seguente e che si voglia monitorare il tasso di clic:

    messagePart.setContent(
        "Hello,
        <p>This is the body of the message. Visit
        <a href='http://www.contoso.com'>http://www.contoso.com</a>.</p>
        Thank you.",
        "text/html");
    
  • Per abilitare il monitoraggio dei clic, usare il codice seguente:

    message.addHeader("X-SMTPAPI",
        "{\"filters\":
        {\"clicktrack\":
        {\"settings\":
        {\"enable\":1}}}}");
    

Procedura: Aggiornare le proprietà dei messaggi di posta elettronica

È possibile sovrascrivere alcune proprietà delle e-mail usando set*Property* oppure aggiungerle usando add*Property*.

Ad esempio, per specificare indirizzi Rispondi a , usare il codice seguente:

InternetAddress addresses[] =
    { new InternetAddress("john@contoso.com"),
      new InternetAddress("wendy@contoso.com") };

message.setReplyTo(addresses);

Per aggiungere un destinatario Cc , usare il codice seguente:

message.addRecipient(Message.RecipientType.CC, new
InternetAddress("john@contoso.com"));

Procedura: Usare servizi aggiuntivi forniti da SendGrid

SendGrid offre API basate sul Web che è possibile usare per sfruttare altre funzionalità di SendGrid dall'applicazione Azure. Per informazioni dettagliate, vedere la documentazione sull'API SendGrid.

Passaggi successivi

A questo punto, dopo aver appreso le nozioni di base del servizio di posta elettronica SendGrid, è possibile usare i collegamenti seguenti per ottenere altre informazioni.