- Home
- Categorie
- Coding e Sistemistica
- Coding
- Invio e-mail
-
Invio e-mail
Salve a tutti, ho creato un form al termine del quale dovrebbe partire la solita e-mail di conferma iscrizione e via discorrendo.
Uso la funzione mail e tutto va bene.
Il problema è che il sito si trova su un mio server in locale e deve utilizzare per le e-mail un server di posta esterno. inoltre non posso andare a toccare le imppstazioni del php.ini e quindi mi chiedevo se direttamente sulla pagina php posso andare a settare i parametri per l'invio dell'e-mail.
-
Devi utilizzare la modalità SMTP invece del comando mail per l'invio.
A quel punto puoi inviare dalla tua pagina attraverso qualsiasi mail account tu disponga su altri server.
Puoi utilizzare phpmailer per esempio.
-
Ok provo phpmailer e poi ti so dire.
-
Ho scaricato ed istallato phpmailer.
Ora mi chiedo: a parte copoarlo sul webserver, si deve configurare qualcosa?Negli esempi che ho trovato su internet mi viene proposto di richiamare la classe class.phpmailer.php.
Apresto questo file vedo che ci sono una serie di impostazioni quali[php]
public $From = 'root@localhost';
public $FromName = 'Root User';
public $Subject = '';
[/php]Nel mio caso, ovvero dovendo inviare e-mail da un server diverso rispetto a quello dove risiede il sito, devo andare a configurare questo file?
-
Ho utilizzato questo codice
[php]
require("class.phpmailer.php");
$mail = new PHPMailer();
$mail->IsSMTP(); // send via SMTP
$mail->Host = "mail.dominio.it"; // SMTP servers
$mail->SMTPAuth = false; // turn on SMTP authentication
$mail->Username = ""; // SMTP username
$mail->Password = ""; // SMTP password
$mail->From = "[email protected]";
$mail->FromName = "Paolo Rossi";
$mail->AddAddress([email protected],"Nome destinatario");
//$mail->AddAddress("[email protected]"); // optional name
//$mail->AddReplyTo("[email protected]","Information");
$mail->WordWrap = 50; // set word wrap
$mail->AddAttachment($thefile); // attachment
//$mail->AddAttachment("/tmp/image.jpg", "new.jpg");
$mail->IsHTML(false); // send as HTML
$mail->Subject = "Messaggio di prova per l'invio e-mail dalo sito travelnostop";
$mail->Body = "Se ti arriva questo messaggio mi dai conferma?";
$mail->AltBody = "Questo è il corpo alternativo";
if(!$mail->Send())
{
echo "Errore nell'invio <p>";
echo "Mailer Error: " . $mail->ErrorInfo;
exit;
}
echo "Messaggio inviato correttamente";
[/php]Il problema è che l'e-mail arriva solo ai destinatari che hanno un indirizzo e-mail con il mio stesso dominio.
Se destinatario ha l'indirizzo e-mail destinatario @ nomedominio .it, l'e-mail viene inviata; se il destinatario ha un indirizzo e-mail diverso (destinatario @ altrodominio . it) l'e-mail non parte e viene restituito un messaggio di errore.Manca qualcosa da configurare?
-
Certo che manca qualcosa, la configurazione dell'SMTP,
aggiorna queste righe sostituendo user e pass corretti,
per intenderci gli stessi che usi nel tuo client di posta.[PHP]
$mail->SMTPAuth = true; // turn on SMTP authentication
$mail->Username = "tuouser"; // SMTP username
$mail->Password = "tuapassword"; // SMTP password
[/PHP]
-
Io ho configurato l'smtp di questo codice
[php]
$mail->SMTPAuth = true; // turn on SMTP authentication
$mail->Username = "user @ miodominio . it"; // SMTP username
$mail->Password = "password"; // SMTP password
[/php]Eppure continua a non funzionare e a restituirmi messaggi di errore.
Ripeto, il server su cui gira il sito non è abilitato ad inviare posta. Sarà per questo che non funziona?