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:
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<? 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"; | |
?> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?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); | |
} | |
} |