View Full Version : PHPMailer: invio mail SMTP
ighisetti
14-10-2011, 15:20
ciao a tutti.
Premessa: sto creando un sito per la mia azienda per la raccolta di informazioni sugli acquisti interni. gli utenti inseriscono le loro richieste che vengono memorizzate e inviate ai loro responsabili tramite mail.
Utilizzo per realizzare questo un ambiente LAMP. Nessun problema con Apache2 e MySql, ma con PHP non riesco ad inviare delle mail.
Il mio server monta Debian Squeeze e NON è anche mail server.
Ora nella mia pagina PHP carico la Classe PHPMailer precendetemente importata nel mio progetto
<?
//includiamo la classe PHPMailer
require "phpmailer/class.phpmailer.php";
//istanziamo la classe
$messaggio = new PHPmailer();
$messaggio->IsSMTP();
$messaggio->Host='Host SMTP';
//definiamo le intestazioni e il corpo del messaggio
$messaggio->From='info@mittente.it';
$messaggio->AddAddress('info@destinatario.it');
$messaggio->AddReplyTo('info@mittente.it');
$messaggio->Subject='Prova.';
$messaggio->Body=stripslashes('Ciao!!!!');
//definiamo i comportamenti in caso di invio corretto
//o di errore
if(!$messaggio->Send()){
echo $messaggio->ErrorInfo;
}else{
echo 'Email inviata correttamente!';
}
//chiudiamo la connessione
$messaggio->SmtpClose();
unset($messaggio);
?>
e dopo aver inserito la credenziali che mi interessano non riesco cmq ad inviare mail. Il problema è che il server SMTP esterno su cui mi appoggio richiede Utente e password, che qui non so come inserire.
Qualcuno mi può dare una mano per favore?
guarda quà
http://www.creationsgarage.com/blog/programmazione/03-03-2010/php-spedire-e-mail-html-con-autenticazione-smtp-e-conferma-di-lettura-a-prova-di-spam
ighisetti
17-10-2011, 16:29
Ciao grazie prima di tutto.
ho utilizzato la guida ma non riesco lo stesso ad inviare mail, non ho messaggi di errore particolari ma non ricevo sulla casella di posta nulla. Non vorrei avere problemi nell inclusione di PHP mailer, ho usato il require_once può essere corretto?
Master FO
18-10-2011, 08:43
Devi aggiungere i parametri relativi all'smtp auth...
$messaggio->SMTPAuth = true;
$messaggio->Username = "utente";
$messaggio->Password = "password";
ighisetti
18-10-2011, 09:01
Devi aggiungere i parametri relativi all'smtp auth...
$messaggio->SMTPAuth = true;
$messaggio->Username = "utente";
$messaggio->Password = "password";
Ciao,
ti lascio il codice del mio script
require_once ("phpmailer/phpmailer.inc.php");
//caricarlo una sola volta nello script (poi potete inviare infinite email)
//Dichiaro la classe PHPMailer
$mail = new PHPMailer(true);
$mail->IsSMTP(true);
$mail->IsHTML(false);
$mail->CharSet = ‘UTF-8′;
$mail->Host = "mail.server.it";
$mail->SMTPDebug = 2;
$mail->SMTPAuth = true;
$mail->Port = 2525;
$mail->Username = "alerts@dominio.it";
$mail->Password = "passwd";
$mail->Priority = 3;//priorità
$mail->AddAddress("user@domionio.com");//destinatario
$mail->SetFrom("alerts@dominio.it");//mittente
$mail->Subject = "Here is the subject";
$mail->Body = "This is the message body";
$mail->Send();
?>
non riesco lo stesso ad inviare mail. Ho provato a salvare lo script separatamente e a chiamarlo con execute() da un altra pagina ma niente lo stesso....
Master FO
18-10-2011, 10:16
Ciao,
ti lascio il codice del mio script
require_once ("phpmailer/phpmailer.inc.php");
//caricarlo una sola volta nello script (poi potete inviare infinite email)
//Dichiaro la classe PHPMailer
$mail = new PHPMailer(true);
$mail->IsSMTP(true);
$mail->IsHTML(false);
$mail->CharSet = ‘UTF-8′;
$mail->Host = "mail.server.it";
$mail->SMTPDebug = 2;
$mail->SMTPAuth = true;
$mail->Port = 2525;
$mail->Username = "alerts@dominio.it";
$mail->Password = "passwd";
$mail->Priority = 3;//priorità
$mail->AddAddress("user@domionio.com");//destinatario
$mail->SetFrom("alerts@dominio.it");//mittente
$mail->Subject = "Here is the subject";
$mail->Body = "This is the message body";
$mail->Send();
?>
non riesco lo stesso ad inviare mail. Ho provato a salvare lo script separatamente e a chiamarlo con execute() da un altra pagina ma niente lo stesso....
Prova a togliere il true da IsSMTP.
Comunque questo è l'esempio che c'è nella documentazione della classe e che, ti assicuro, funziona:
$mail = new PHPMailer(true); // the true param means it will throw exceptions on errors, which we need to catch
$mail->IsSMTP(); // telling the class to use SMTP
try {
$mail->Host = "mail.yourdomain.com"; // SMTP server
$mail->SMTPDebug = 2; // enables SMTP debug information (for testing)
$mail->SMTPAuth = true; // enable SMTP authentication
$mail->Host = "mail.yourdomain.com"; // sets the SMTP server
$mail->Port = 26; // set the SMTP port for the GMAIL server
$mail->Username = "yourname@yourdomain"; // SMTP account username
$mail->Password = "yourpassword"; // SMTP account password
$mail->AddReplyTo('name@yourdomain.com', 'First Last');
$mail->AddAddress('whoto@otherdomain.com', 'John Doe');
$mail->SetFrom('name@yourdomain.com', 'First Last');
$mail->AddReplyTo('name@yourdomain.com', 'First Last');
$mail->Subject = 'PHPMailer Test Subject via mail(), advanced';
$mail->AltBody = 'To view the message, please use an HTML compatible email viewer!'; // optional - MsgHTML will create an alternate automatically
$mail->MsgHTML(file_get_contents('contents.html'));
$mail->AddAttachment('images/phpmailer.gif'); // attachment
$mail->AddAttachment('images/phpmailer_mini.gif'); // attachment
$mail->Send();
echo "Message Sent OK</p>\n";
} catch (phpmailerException $e) {
echo $e->errorMessage(); //Pretty error messages from PHPMailer
} catch (Exception $e) {
echo $e->getMessage(); //Boring error messages from anything else!
}
ighisetti
19-10-2011, 08:21
Prova a togliere il true da IsSMTP.
Comunque questo è l'esempio che c'è nella documentazione della classe e che, ti assicuro, funziona:
$mail = new PHPMailer(true); // the true param means it will throw exceptions on errors, which we need to catch
$mail->IsSMTP(); // telling the class to use SMTP
try {
$mail->Host = "mail.yourdomain.com"; // SMTP server
$mail->SMTPDebug = 2; // enables SMTP debug information (for testing)
$mail->SMTPAuth = true; // enable SMTP authentication
$mail->Host = "mail.yourdomain.com"; // sets the SMTP server
$mail->Port = 26; // set the SMTP port for the GMAIL server
$mail->Username = "yourname@yourdomain"; // SMTP account username
$mail->Password = "yourpassword"; // SMTP account password
$mail->AddReplyTo('name@yourdomain.com', 'First Last');
$mail->AddAddress('whoto@otherdomain.com', 'John Doe');
$mail->SetFrom('name@yourdomain.com', 'First Last');
$mail->AddReplyTo('name@yourdomain.com', 'First Last');
$mail->Subject = 'PHPMailer Test Subject via mail(), advanced';
$mail->AltBody = 'To view the message, please use an HTML compatible email viewer!'; // optional - MsgHTML will create an alternate automatically
$mail->MsgHTML(file_get_contents('contents.html'));
$mail->AddAttachment('images/phpmailer.gif'); // attachment
$mail->AddAttachment('images/phpmailer_mini.gif'); // attachment
$mail->Send();
echo "Message Sent OK</p>\n";
} catch (phpmailerException $e) {
echo $e->errorMessage(); //Pretty error messages from PHPMailer
} catch (Exception $e) {
echo $e->getMessage(); //Boring error messages from anything else!
}
Ciao :)
devo essere io che sbaglio qualcosa a questo punto, ho provato la tua soluzione ma niente da fare questo il mio codice
require_once("phpmailer/class.phpmailer.inc.php");
$mail = new PHPMailer(true); // the true param means it will throw exceptions on errors, which we need to catch
$mail->IsSMTP(); // telling the class to use SMTP
try {
$mail->Host = "mail.server.it"; // SMTP server
$mail->SMTPDebug = 2; // enables SMTP debug information (for testing)
$mail->SMTPAuth = true; // enable SMTP authentication
$mail->Host = "mail.server.it"; // sets the SMTP server
$mail->Port = 2525; // set the SMTP port for the GMAIL server
$mail->Username = "alerts@dominio.it"; // SMTP account username
$mail->Password = "alerts"; // SMTP account password
$mail->AddReplyTo('pcarioni@dominio.com', 'Paolo CARIONI');
$mail->AddAddress('ighisetti@dominio.com', 'Ivan GHISETTI');
$mail->SetFrom('alerts@dominio.it', 'Ivan Ghisetti');
$mail->Subject = 'PHPMailer Test Subject via mail(), advanced';
$mail->AltBody = 'To view the message, please use an HTML compatible email viewer!'; // optional - MsgHTML will create an alternate automatically
$mail->MsgHTML(file_get_contents('corposito.html'));
$mail->Send();
echo "Message Sent OK</p>\n";
} catch (phpmailerException $e) {
echo $e->errorMessage(); //Pretty error messages from PHPMailer
} catch (Exception $e) {
echo $e->getMessage(); //Boring error messages from anything else!
}
dopo lo script ho inserito un alert a video che mi dice se è andato tutto a buon fine, e addirittura questo non compare, penso quindi che il codice non venga processato fino in fondo, ma si fermi da qualche parte durante il tentativo di invio della mail.
Qualche idea??
Master FO
19-10-2011, 08:26
Prova ad abilitare gli errori su php e vedere se ritorna qualcosa.
ighisetti
19-10-2011, 08:29
Prova ad abilitare gli errori su php e vedere se ritorna qualcosa.
Ciao,
non vorrei sembrare rompiscatole ma sono abastanza alle prime armi: come abilito e gestisco gli errori in php?
Grazie :)
Master FO
19-10-2011, 08:44
All'inizio del tuo script metti
error_reporting(E_ALL);
Se ci sono degli errori te li mostrerà.
Ma, così per sapere, quali versioni stai utlizzando di php e della classe PHPMailer?
ighisetti
19-10-2011, 09:05
All'inizio del tuo script metti
error_reporting(E_ALL);
Se ci sono degli errori te li mostrerà.
Ma, così per sapere, quali versioni stai utlizzando di php e della classe PHPMailer?
il comando per gli errori non mostra nulla :(
PHP: PHP 5.3.3-7+squeeze3 with Suhosin-Patch (cli) (built: Jun 28 2011 13:13:26)
PHPMailer: versione 0.9
Master FO
19-10-2011, 09:07
Scaricati una versione decente di PHPMailer
http://code.google.com/a/apache-extras.org/p/phpmailer/downloads/list
La 0.9 è del 2001... di sicuro sarà piena di istruzioni deprecate che con php5.3 non funzionano.
ighisetti
19-10-2011, 09:26
Scaricati una versione decente di PHPMailer
http://code.google.com/a/apache-extras.org/p/phpmailer/downloads/list
La 0.9 è del 2001... di sicuro sarà piena di istruzioni deprecate che con php5.3 non funzionano.
:) finalmente ci sono riuscito :)
Grazie mille dell'aiuto bastava davvero avere la versione più aggironata. Sai sto realizzando un software per la gestione richieste d'acquisto per la mia azienda....su server debian con apache2, my sql come DB ho imparato a fare query, sessioni e pagine internet con PHP ma questa mail proprio non ne voleva sapere di funzionare.
Grazie mille per l'aiuto e la pazienza...grande!!
Master FO
19-10-2011, 09:34
Figurati ;)
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.