Premessa

Questa configurazione ti permette di spedire una PEC con Yii tramite il sistema di email synfony/mailer che ho recentemente sostituito a swiftmailer, ormai abbandonato dalla comunità di sviluppo. Se usi ancora swiftmailer leggi l’articolo Yii2: cambiare metodo di spedizione della posta da swiftmailer a synfony/mailer.

Spedire una PEC oltre all’email tradizionale

Recentemente, per una web application, ho dovuto progettare una funzionalità in grado di:

  • spedire un’email da un account SMTP “normale”
  • se nella configurazione è presente un indirizzo PEC, mandare un’email supplementare da un indirizzo PEC, utilizzando una configurazione SMTP secondaria.

Il framework Yii2 consente una sola configurazione dell’email “transport” (per la spedizione delle email), quindi devi modificare la configurazione SMTP per quella sola particolare email certificata.

Per riuscirci, innanzi tutto devi creare un array con la corretta configurazione SMTP e utilizzare la funzione setTransport per impostare la nuova configurazione:

   // crea il transport pec
   $pec_trans = [
       'scheme' => 'smtps',
       'host' => 'smtps.xxx.yyyyyy.it',
       'username' => '',
       'password' => '',
       'port' => '',
       'encryption' => '', /* ssl o tls */
   ];
   Yii::$app->mailer->setTransport($pec_trans);

Subito dopo potrai inviare l’email dall’indirizzo PEC tramite la solita funzione:

   $message_pec = Yii::$app->mailer->compose()
       ->setFrom('zzzzzzzzzzzATpec.it')
       ->setTo('testATpec.it')
       ->setSubject('test - soggetto')
       ->setTextBody(strip_tags($body))
       ->setHtmlBody($body)
       ->send();

Naturalmente la nuova configurazione può essere memorizzata e letta da un file di configurazione o dal database a seconda delle esigenze.

Spero di esserti stato utile. Se hai bisogno di aiuto per sviluppare nuove funzionalità con Yii2 o vuoi capire come fare, contattami per una consulenza.