PDA

View Full Version : [PHP] utilizzo della classe PHPmailer


Lord_Brisingr
09-07-2017, 20:55
Salve a tutti, sto cercando di creare un'applicazione WEB che permetta di inviare suggerimenti attraverso la mail per poter migliorare il mio sito , utilizzando la classe PHPmailer.

Il codice finora sviluppato è il seguente (la libreria è già stata inclusa precedentemente):

//istanziamo la classe
$messaggio = new PHPmailer();
$messaggio->IsSMTP();
$messaggio->Host = 'Host SMTP';

$indirizzoMittente = $_POST["from"];
$indirizzoDestinatario = 'indirizzo.prova@gmail.com';

$messaggio = $_POST["mail"];
$oggetto = $_POST["oggetto"];


$messaggio->From = $indirizzoMittente;
$messaggio->addAddress($indirizzoDestinatario);
$messaggio->AddReplyTo($indirizzoMittente);
$messaggio->Subject = $oggetto;
$messaggio->Body = stripslashes($oggetto);

//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);


il seguente codice dà questi errori:


Warning: Attempt to assign property of non-object in C:\xamppp\htdocs\tesina\screenMod.php on line 99

Fatal error: Call to a member function addAddress() on string in C:\xamppp\htdocs\tesina\screenMod.php on line 100

controllando il codice presente nella classe, tutto mi sembra corretto. Qualcuno sa aiutarmi?

Nuke987
10-07-2017, 13:21
Il problema è che durante il codice hai fatto diventare $mesaggio da oggetto a stringa. Non essere "avaro" con i nomi delle variabili. Ti spiego l'inghippo commentando linea per linea.

$messaggio = new PHPmailer(); // Hai inizializzato $messaggio che è un oggetto
$messaggio->IsSMTP(); // È ancora un oggetto
$messaggio->Host = 'Host SMTP'; // È ancora un oggetto

$indirizzoMittente = $_POST["from"]; // È ancora un oggetto
$indirizzoDestinatario = 'indirizzo.prova@gmail.com'; // È ancora un oggetto

$messaggio = $_POST["mail"]; // Zac! Ora è una stringa e si è rotto tutto