Problemi con l’invio di email con account Gmail da Codeigniter tramite SMTP?

Non sentirti impotente e prendi in mano la situazione! Il “bug”, se così vogliamo chiamarlo, consiste nell’assenza di un paio di parametri nella configurazione della libreria ‘email’ di Codeigniter.

Ti ho scritto due file, uno di configurazione e un modello, che risolveranno il tuo problema.

P.S. Non ho voluto fare un mono-file anche se puoi tranquillamente mettere la configurazione nel _construct() del modello e dimenticarti del file di configurazione 😉

Il primo file va inserito su

/application/config/email.php

Il secondo file, il modello, va inserito su

/application/models/Email_model.php

Successivamente puoi caricarlo in automatico inserendolo nel file config/autoload.php oppure caricare il modello nel controller con

$this->load->library("email");

e se avrai mantenuto il file di configurazione nella cartella config, in automatico userà quella come configurazione di default!

Nel modello troverai anche una variabile

$nome_mittente

che potrai modificare con il nome che vorrai venga visualizzato dal destinatario come mittente della mail.

Ecco a te il codice dei due file:


<? defined('BASEPATH') OR exit('No direct script access allowed');
$indirizzo_email = "info@iltuosito.it";
$password_email = "la_tua_password";
$config['protocol'] = 'smtp';
$config['smtp_host'] = 'smtp.gmail.com';
$config['smtp_port'] = '465';
$config['smtp_crypto'] = 'ssl';
$config['smtp_timeout'] = '30';
$config['smtp_user'] = $indirizzo_email;
$config['smtp_pass'] = $password_email;
$config['charset'] = 'utf-8';
$config['mailtype'] = 'html';
$config['wordwrap'] = TRUE;
//Le righe seguenti sono quelle che solitamente, se assenti, danno timeout in fase di invio
$config['newline'] = "\r\n";
$config['crlf'] = "\r\n";
?>

view raw

email.php

hosted with ❤ by GitHub


<?php
class Email_model extends CI_Model {
private $nome_mittente = "La Mia Azienda";
public function __construct()
{
parent::__construct();
//La configurazione è nella cartella config/email.php
$this->load->library("email");
}
public function invia($destinatario,$oggetto,$messaggio){
$this->email->from($this->email->smtp_user, $this->nome_mittente);
$this->email->to($destinatario);
//$this->email->cc('another@another-example.com');
//$this->email->bcc('them@their-example.com');
$this->email->subject($oggetto);
$this->email->message($messaggio);
if(!$this->email->send()){
log_message("error","EMAIL – Errore invio email: ".$this->email->print_debugger());
return false;
}
return true;
}
public function staff($oggetto,$messaggio){
$this->invia(array("staff@latuaazienda.it","dev@latuaazienda.it"),$oggetto,$messaggio);
}
}

view raw

Email_model.php

hosted with ❤ by GitHub