Come usare il servizio di posta elettronica SendGrid da PHPHow to Use the SendGrid Email Service from PHP

Questa guida illustra come eseguire attività di programmazione comuni con il servizio di posta elettronica SendGrid in Azure.This guide demonstrates how to perform common programming tasks with the SendGrid email service on Azure. Gli esempi sono scritti in PHP.The samples are written in PHP. Gli scenari presentati includono la creazione dei messaggi di posta elettronica, l'invio di messaggi di posta elettronica, e l'aggiunta di allegati.The scenarios covered include constructing email, sending email, and adding attachments. Per altre informazioni su SendGrid e sull'invio della posta elettronica, vedere la sezione Passaggi successivi .For more information on SendGrid and sending email, see the Next Steps section.

Informazioni sul servizio di posta elettronica SendGridWhat is the SendGrid Email Service?

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.SendGrid is a [cloud-based email service] that provides reliable [transactional email delivery], scalability, and real-time analytics along with flexible APIs that make custom integration easy. Gli scenari di utilizzo comuni di SendGrid includono:Common SendGrid usage scenarios include:

  • Invio automatico di ricevute ai clientiAutomatically sending receipts to customers
  • Amministrazione di liste di distribuzione per l'invio mensile ai clienti di volantini elettronici e offerte specialiAdministering distribution lists for sending customers monthly e-fliers and special offers
  • Raccolta di metriche in tempo reale per elementi quali indirizzi di posta elettronica bloccati e velocità di risposta al clienteCollecting real-time metrics for things like blocked e-mail, and customer responsiveness
  • Generazione di report per agevolare l'identificazione delle tendenzeGenerating reports to help identify trends
  • Inoltro di richieste dei clientiForwarding customer inquiries
  • Notifiche di posta elettronica dall'applicazioneEmail notifications from your application

Per altre informazioni, vedere https://sendgrid.com.For more information, see https://sendgrid.com.

Creazione di un account SendGridCreate a SendGrid Account

I clienti di Azure possono sbloccare 25.000 messaggi di posta elettronica gratuiti ogni mese.Azure customers can unlock 25,000 free emails each month. 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).These 25,000 free monthly emails will give you access to advanced reporting and analytics and all APIs (Web, SMTP, Event, Parse and more). Per informazioni sui servizi aggiuntivi offerti da SendGrid, vedere la pagina delle soluzioni di SendGrid.For information about additional services provided by SendGrid, visit the SendGrid Solutions page.

Per iscriversi a un account SendGridTo sign up for a SendGrid account

  1. Accedere al Portale di Azure.Log in to the Azure portal.
  2. Fare clic su Nuovo dal menu a sinistra.In the menu on the left, click New.

    command-bar-new

  3. Fare clic su Componenti aggiuntivi e quindi SendGrid Email Delivery (Recapito email di SendGrid).Click Add-ons and then SendGrid Email Delivery.

    sendgrid-store

  4. Completare il modulo di iscrizione e selezionare Crea.Complete the signup form and select Create.

    creazione di SendGrid

  5. Immettere un nome per identificare il proprio servizio SendGrid nelle impostazioni di Azure.Enter a Name to identify your SendGrid service in your Azure settings. 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.Names must be between 1 and 100 characters in length and contain only alphanumeric characters, dashes, dots, and underscores. Il nome deve essere univoco nell'elenco di elementi di Azure Store sottoscritti.The name must be unique in your list of subscribed Azure Store Items.
  6. Immettere e confermare la password.Enter and confirm your Password.
  7. Scegliere la propria sottoscrizione.Choose your Subscription.
  8. Creare un nuovo gruppo di risorse o selezionarne uno esistente.Create a new Resource group or use an existing one.
  9. Nella sezione Piano tariffario selezionare il piano di SendGrid a cui si desidera iscriversi.In the Pricing tier section select the SendGrid plan you want to sign up for.

    prezzi di SendGrid

  10. Se disponibile, immettere un codice di promozione.Enter a Promotion Code if you have one.
  11. Inserire le informazioni di contatto.Enter your Contact Information.
  12. Riesaminare e accettare le Note legali.Review and accept the Legal terms.
  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.After confirming your purchase you will see a Deployment Succeeded pop-up and you will see your account listed in the All resources section.

    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.After you have completed your purchase and clicked the Manage button to initiate the email verification process, you will receive an email from SendGrid asking you to verify your account. Se non si riceve questa email o se si hanno problemi nella verifica dell'account, consultare le domande frequenti.If you do not receive this email, or have problems verifying your account, please see this FAQ.

    manage

    È possibile inviare fino a 100 email al giorno fino a quando non si è verificato l'account.You can only send up to 100 emails/day until you have verified your 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.To modify your subscription plan or see the SendGrid contact settings, click the name of your SendGrid service to open the SendGrid Marketplace dashboard.

    Scheda Impostazioni

    Per inviare un'email tramite SendGrid, è necessario specificare la chiave API.To send an email using SendGrid, you must supply your API Key.

Per trovare la chiave API per SendGridTo find your SendGrid API Key

  1. Fare clic su Manage.Click Manage.

    manage

  2. Nel dashboard di SendGrid, selezionare Impostazioni e quindi Chiavi API nel menu a sinistra.In your SendGrid dashboard, select Settings and then API Keys in the menu on the left.

    chiavi API

  3. Fare clic sul menu a discesa Crea chiave API e selezionare General API Key (Chiave API generale).Click the Create API Key dropdown and select General API Key.

    chiave API generale

  4. Indicare almeno il nome di questa chiave e garantire l'accesso completo a Mail Send (Invio email) e selezionare Salva.At a minimum, provide the Name of this key and provide full access to Mail Send and select Save.

    access

  5. L'API verrà visualizzata una sola volta a questo punto.Your API will be displayed at this point one time. Assicurarsi di salvarla in modo sicuro.Please be sure to store it safely.

Per individuare le credenziali di SendGridTo find your SendGrid credentials

  1. Fare clic sull'icona della chiave per trovare il nome utente.Click the key icon to find your Username.

    key

  2. La password è quella specificata al momento della configurazione.The password is the one you chose at setup. È possibile selezionare Cambia password o Reimposta password per apportare modifiche.You can select Change password or Reset password to make any changes.

Per gestire le impostazioni di recapito della posta, fare clic sul pulsante Gestisci.To manage your email deliverability settings, click the Manage button. Si verrà reindirizzati al dashboard di SendGrid.This will redirect to your SendGrid dashboard.

![manage][manage]

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

Utilizzo di SendGrid dall'applicazione PHPUsing SendGrid from your PHP Application

L'uso di SendGrid in un'applicazione PHP di Azure non richiede speciali attività di configurazione o di scrittura del codice.Using SendGrid in an Azure PHP application requires no special configuration or coding. Poiché SendGrid è un servizio, è possibile accedervi da un'applicazione cloud esattamente come da un'applicazione locale.Because SendGrid is a service, it can be accessed in exactly the same way from a cloud application as it can from an on-premises application.

Procedura: Inviare un messaggio di posta elettronicaHow to: Send an Email

È possibile inviare un messaggio di posta elettronica tramite SMTP o con l'API Web di SendGrid.You can send email using either SMTP or the Web API provided by SendGrid.

API SMTPSMTP API

Per inviare un messaggio di posta elettronica tramite l'API SMTP di SendGrid, usare Swift Mailer, una libreria basata su componenti per l'invio di messaggi di posta elettronica da applicazioni PHP.To send email using the SendGrid SMTP API, use Swift Mailer, a component-based library for sending emails from PHP applications. Per scaricare la libreria Swift Mailer, accedere alla pagina http://swiftmailer.org/download v5.3.0. Usare Composer per installare Swift Mailer.You can download the Swift Mailer library from http://swiftmailer.org/download v5.3.0 (use Composer to install Swift Mailer). L'invio di e-mail tramite la libreria prevede la creazione di istanze delle classi Swift_SmtpTransport, Swift_Mailer e Swift_Message, l'impostazione delle proprietà appropriate e la chiamata del metodo Swift_Mailer::send.Sending email with the library involves creating instances of the Swift_SmtpTransport, Swift_Mailer, and Swift_Message classes, setting the appropriate properties, and calling the Swift_Mailer::send method.

<?php
 include_once "vendor/autoload.php";
 /*
  * Create the body of the message (a plain-text and an HTML version).
  * $text is your plain-text email
  * $html is your html version of the email
  * If the receiver is able to view html emails then only the html
  * email will be displayed
  */
 $text = "Hi!\nHow are you?\n";
 $html = "<html>
       <head></head>
       <body>
           <p>Hi!<br>
               How are you?<br>
           </p>
       </body>
       </html>";
 // This is your From email address
 $from = array('someone@example.com' => 'Name To Appear');
 // Email recipients
 $to = array(
       'john@contoso.com'=>'Destination 1 Name',
       'anna@contoso.com'=>'Destination 2 Name'
 );
 // Email subject
 $subject = 'Example PHP Email';

 // Login credentials
 $username = 'yoursendgridusername';
 $password = 'yourpassword';

 // Setup Swift mailer parameters
 $transport = Swift_SmtpTransport::newInstance('smtp.sendgrid.net', 587);
 $transport->setUsername($username);
 $transport->setPassword($password);
 $swift = Swift_Mailer::newInstance($transport);

 // Create a message (subject)
 $message = new Swift_Message($subject);

 // attach the body of the email
 $message->setFrom($from);
 $message->setBody($html, 'text/html');
 $message->setTo($to);
 $message->addPart($text, 'text/plain');

 // send message
 if ($recipients = $swift->send($message, $failures))
 {
     // This will let us know how many users received this message
     echo 'Message sent out to '.$recipients.' users';
 }
 // something went wrong =(
 else
 {
     echo "Something went wrong - ";
     print_r($failures);
 }

API WebWeb API

Usare la funzione curl di PHP per inviare messaggi di posta elettronica tramite l'API Web SendGrid.Use PHP's curl function to send email using the SendGrid Web API.

<?php

 $url = 'https://api.sendgrid.com/';
 $user = 'USERNAME';
 $pass = 'PASSWORD';

 $params = array(
      'api_user' => $user,
      'api_key' => $pass,
      'to' => 'john@contoso.com',
      'subject' => 'testing from curl',
      'html' => 'testing body',
      'text' => 'testing body',
      'from' => 'anna@contoso.com',
   );

 $request = $url.'api/mail.send.json';

 // Generate curl request
 $session = curl_init($request);

 // Tell curl to use HTTP POST
 curl_setopt ($session, CURLOPT_POST, true);

 // Tell curl that this is the body of the POST
 curl_setopt ($session, CURLOPT_POSTFIELDS, $params);

 // Tell curl not to return headers, but do return the response
 curl_setopt($session, CURLOPT_HEADER, false);
 curl_setopt($session, CURLOPT_RETURNTRANSFER, true);

 // obtain response
 $response = curl_exec($session);
 curl_close($session);

 // print everything out
 print_r($response);

L'API Web di SendGrid è molto simile a un'API REST, sebbene non sia una vera API RESTful poiché nella maggior parte delle chiamate è possibile indifferentemente i verbi GET e POST.SendGrid's Web API is very similar to a REST API, though it is not truly a RESTful API since, in most calls, both GET and POST verbs can be used interchangeably.

Procedura: Aggiungere un allegatoHow to: Add an Attachment

API SMTPSMTP API

L'invio di un allegato tramite l'API SMTP prevede una riga di codice aggiuntiva nello script di esempio per l'invio di un messaggio di posta elettronica con Swift Mailer.Sending an attachment using the SMTP API involves one additional line of code to the example script for sending an email with Swift Mailer.

<?php
 include_once "vendor/autoload.php";
 /*
  * Create the body of the message (a plain-text and an HTML version).
  * $text is your plain-text email
  * $html is your html version of the email
  * If the reciever is able to view html emails then only the html
  * email will be displayed
  */
 $text = "Hi!\nHow are you?\n";
  $html = "<html>
      <head></head>
      <body>
         <p>Hi!<br>
            How are you?<br>
         </p>
      </body>
      </html>";

 // This is your From email address
 $from = array('someone@example.com' => 'Name To Appear');

 // Email recipients
 $to = array(
      'john@contoso.com'=>'Destination 1 Name',
      'anna@contoso.com'=>'Destination 2 Name'
 );
 // Email subject
 $subject = 'Example PHP Email';

 // Login credentials
 $username = 'yoursendgridusername';
 $password = 'yourpassword';

 // Setup Swift mailer parameters
 $transport = Swift_SmtpTransport::newInstance('smtp.sendgrid.net', 587);
 $transport->setUsername($username);
 $transport->setPassword($password);
 $swift = Swift_Mailer::newInstance($transport);

 // Create a message (subject)
 $message = new Swift_Message($subject);

 // attach the body of the email
 $message->setFrom($from);
 $message->setBody($html, 'text/html');
 $message->setTo($to);
 $message->addPart($text, 'text/plain');
 $message->attach(Swift_Attachment::fromPath("path\to\file")->setFileName("file_name"));

 // send message
 if ($recipients = $swift->send($message, $failures))
 {
      // This will let us know how many users received this message
      echo 'Message sent out to '.$recipients.' users';
 }
 // something went wrong =(
 else
 {
      echo "Something went wrong - ";
      print_r($failures);
 }

Di seguito è riportata la riga di codice aggiuntiva:The additional line of code is as follows:

 $message->attach(Swift_Attachment::fromPath("path\to\file")->setFileName('file_name'));

Questa riga di codice chiama il metodo attach sull'oggetto Swift_Message e usa il metodo statico fromPath sulla classe Swift_Attachment per recuperare e allegare un file a un messaggio.This line of code calls the attach method on the Swift_Message object and uses static method fromPath on the Swift_Attachment class to get and attach a file to a message.

API WebWeb API

L'invio di un allegato tramite l'API Web è molto simile all'invio di un messaggio di posta elettronica con l'API Web.Sending an attachment using the Web API is very similar to sending an email using the Web API. Si noti tuttavia che nell'esempio riportato di seguito, il parametro array deve contenere questo elemento:However, note that in the example that follows, the parameter array must contain this element:

'files['.$fileName.']' => '@'.$filePath.'/'.$fileName

Esempio:Example:

<?php

 $url = 'https://api.sendgrid.com/';
 $user = 'USERNAME';
 $pass = 'PASSWORD';

 $fileName = 'myfile';
 $filePath = dirname(__FILE__);

 $params = array(
     'api_user' => $user,
     'api_key' => $pass,
     'to' =>'john@contoso.com',
     'subject' => 'test of file sends',
     'html' => '<p> the HTML </p>',
     'text' => 'the plain text',
     'from' => 'anna@contoso.com',
     'files['.$fileName.']' => '@'.$filePath.'/'.$fileName
 );

 print_r($params);

 $request = $url.'api/mail.send.json';

 // Generate curl request
 $session = curl_init($request);

 // Tell curl to use HTTP POST
 curl_setopt ($session, CURLOPT_POST, true);

 // Tell curl that this is the body of the POST
 curl_setopt ($session, CURLOPT_POSTFIELDS, $params);

 // Tell curl not to return headers, but do return the response
 curl_setopt($session, CURLOPT_HEADER, false);
 curl_setopt($session, CURLOPT_RETURNTRANSFER, true);

 // obtain response
 $response = curl_exec($session);
 curl_close($session);

 // print everything out
 print_r($response);

Procedura: Usare filtri per abilitare piè di pagina, monitoraggio e analisiHow to: Use Filters to Enable Footers, Tracking, and Analytics

SendGrid fornisce funzionalità di posta elettronica aggiuntive attraverso l'uso di "filtri".SendGrid provides additional email functionality through the use of 'filters'. 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.These are settings that can be added to an email message to enable specific functionality such as enabling click tracking, Google analytics, subscription tracking, and so on.

È possibile applicare filtri a un messaggio usando la proprietà filters.Filters can be applied to a message by using the filters property. Ogni filtro è specificato da un hash che contiene impostazioni specifiche del filtro.Each filter is specified by a hash containing filter-specific settings. Nell'esempio seguente viene abilitato il filtro piè di pagina e viene specificato un messaggio di testo che verrà aggiunto nella parte inferiore del messaggio di posta elettronica:The following example enables the footer filter and specifies a text message that will be appended to the bottom of the email message. Per questo esempio si userà la libreria sendgrid-php.For this example we will use [sendgrid-php library]. Usare Composer per installare la libreria:Use Composer to install library:

php composer.phar require sendgrid/sendgrid 2.1.1

Esempio:Example:

<?php
 /*
  * This example is used for sendgrid-php V2.1.1 (https://github.com/sendgrid/sendgrid-php/tree/v2.1.1)
  */
 include "vendor/autoload.php";

 $email = new SendGrid\Email();
 // The list of addresses this message will be sent to
 // [This list is used for sending multiple emails using just ONE request to SendGrid]
 $toList = array('john@contoso.com', 'anna@contoso.com');

 // Specify the names of the recipients
 $nameList = array('Name 1', 'Name 2');

 // Used as an example of variable substitution
 $timeList = array('4 PM', '5 PM');

 // Set all of the above variables
 $email->setTos($toList);
 $email->addSubstitution('-name-', $nameList);
 $email->addSubstitution('-time-', $timeList);

 // Specify that this is an initial contact message
 $email->addCategory("initial");

 // You can optionally setup individual filters here, in this example, we have
 // enabled the footer filter
 $email->addFilter('footer', 'enable', 1);
 $email->addFilter('footer', "text/plain", "Thank you for your business");
 $email->addFilter('footer', "text/html", "Thank you for your business");

 // The subject of your email
 $subject = 'Example SendGrid Email';

 // Where is this message coming from. For example, this message can be from
 // support@yourcompany.com, info@yourcompany.com
 $from = 'someone@example.com';

 // If you do not specify a sender list above, you can specifiy the user here. If
 // a sender list IS specified above, this email address becomes irrelevant.
 $to = 'john@contoso.com';

 # Create the body of the message (a plain-text and an HTML version).
 # text is your plain-text email
 # html is your html version of the email
 # if the receiver is able to view html emails then only the html
 # email will be displayed

 /*
  * Note the variable substitution here =)
  */
 $text = "
 Hello -name-,
 Thank you for your interest in our products. We have set up an appointment to call you at -time- EST to discuss your needs in more detail.
 Regards,
 Fred";

 $html = "
 <html>
 <head></head>
 <body>
 <p>Hello -name-,<br>
 Thank you for your interest in our products. We have set up an appointment
 to call you at -time- EST to discuss your needs in more detail.

 Regards,

 Fred<br>
 </p>
 </body>
 </html>";

 // set subject
 $email->setSubject($subject);

 // attach the body of the email
 $email->setFrom($from);
 $email->setHtml($html);
 $email->addTo($to);
 $email->setText($text);

 // Your SendGrid account credentials
 $username = 'sendgridusername@yourdomain.com';
 $password = 'example';

 // Create SendGrid object
 $sendgrid = new SendGrid($username, $password);

 // send message
 $response = $sendgrid->send($email);

 print_r($response);

Passaggi successiviNext Steps

A questo punto, dopo aver appreso le nozioni di base del servizio di posta elettronica SendGrid, usare i collegamenti seguenti per altre informazioni.Now that you've learned the basics of the SendGrid Email service, follow these links to learn more.

Per ulteriori informazioni, vedere anche il Centro per sviluppatori di PHP.For more information, see also the PHP Developer Center.