configurazione invio mail php

Manu93

Nuovo Utente
14 Set 2015
27
0
0
Salve a tutti, ho un piccolo problemino con l'invio delle mail mediante php. Supponiamo di avere questo semplicissimo e banale script:

$success = mail('[email protected]', 'ciao', 'questo è il testo del messaggio');

if ($success) { echo 'mail inviata';} else {echo 'invio non riuscito';}

Ovviamente nel campo '[email protected]' ho inserito il mio indirizzo, comunque sia il risultato è che mi compare l'output 'mail inviata' ma non ricevo nulla. Sicuramente dovrò configurare qualcosa modificando il file php.ini, ho provato a fare delle ricerche su internet ma non ci ho capito molto purtroppo! Mi date una mano per favore?

PS: uso XAMPP su windows.
 

Manu93

Nuovo Utente
14 Set 2015
27
0
0
Grazie per avermi risposto, comunque sia ho utilizzato questa sintassi ancora più semplice ma non va lo stesso:
$message = "testo del messaggio";
mail('[email protected]', 'My Subject', $message);

Questa è la configurazione del mio file php.ini:

[mail function]
; XAMPP: Comment out this if you want to work with an SMTP Server like Mercury
; SMTP = localhost
; smtp_port = 25

; For Win32 only.
; http://php.net/sendmail-from
;sendmail_from = [email protected]

Dove sbaglio?

Siate chiari per favore, sono alle prime armi con php.
 
Ultima modifica:

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
scusa una cosa: stai provando in locale? generalmente mail() in locale non funzione
devi caricare lo script dove hai il sito e chiamarlo col bw
 

Manu93

Nuovo Utente
14 Set 2015
27
0
0
Devo riuscire a farlo partire in locale. Adesso ho provato su linux installando come webserver postfix, ma niente, non va lo stesso!
 

marino51

Utente Attivo
28 Feb 2013
3.203
207
63
Lombardia
se lo devi spedire da locale devi avere installato un servizio di posta, non basta aver installato un web server,
in questo caso devi prima essere sicuro che il servizio di posta che installi sia funzionante,
successivamente provi ad inviare le mail da php

se, in alternativa vuoi spedire da locale ma attraverso un provider, ci sono 2 casi,
il provider non vuole crittografia
il provider vuole la crittografia

ma in ogni caso il provider vuole sapere userid e password dell'utente del servizio

due esempi, alice(telecom) senza crittografia,
PHP:
$eM_Host     = "out.alice.it";		// ok mail
$eM_Port     = "25";
$eM_Auth     = false;
$eM_Secure   = "";
$eM_username = "[email protected]";
$eM_password = "CAMBIAMI";

gmail con crittografia (ma usando phpmailer)
PHP:
$eM_Host     = "smtp.gmail.com";		// ok PHPmailer
$eM_Port     = 465;
$eM_Auth     = true;
$eM_Secure   = "ssl";
$eM_username = "[email protected]";
$eM_password = "CAMBIAMI";

se intendi percorrere questa seconda strada, trovi (credo sufficienti) informazioni in questo post,
http://forum.mrwebmaster.it/snippet...ettronica-servizio-offerto-vari-provider.html
ciao
Marino
 

marino51

Utente Attivo
28 Feb 2013
3.203
207
63
Lombardia
scusa se ti rispondo in ritardo ma sono in viaggio con limitato accesso a internet

non so se hai risolto, ma facciamo un esempio banale,
citi posix e sendmail, sono servizi che possiamo identificare come gli "uffici postali"
l'ufficio postale deve funzionare correttamente per consegnare o ricevere la posta

quando il tuo ufficio postale lavora bene puoi usare php o client o altri strumenti
che generano e depositano le mail nella cartella preposta alla consegna (buca delle lettere) dell'ufficio postale
questi strumenti devono però dialogare correttamente con il tuo ufficio postale (*)

l'ufficio postale trovando le mail nella cartella, provvederà all'effettiva consegna e libererà la cartella stessa

l'ufficio postale farà trovare nella cartella preposta alla ricezione le mail ricevute
allo stesso modo avrai client o strumenti che prelevano le mail ricevute
gestendone la persistenza nella cartella di ricezione dell'ufficio postale

mantenere l'ufficio postale è una complicazione, evitabile se si possono usare
"uffici postali" già esistenti (gmail, hotmail, web.de, libero, alice ....)

in questo caso è sufficiente dialogare correttamente con lo specifico servizio usato
questa funzione è equivalente alla precedente (*)

fai sapere a che punto sei
ciao
Marino
 

Manu93

Nuovo Utente
14 Set 2015
27
0
0
Ciao Marino, diciamo che avevo 'archiviato' questo argomento poichè non trovavo soluzione e sono andato avanti con lo studio. Comunque sia ho afferrato il concetto, sei stato molto chiaro e preciso grazie.
Tuttavia ho ancora qualche dubbio.. se io volessi usare proprio gmail, come server mail e fare in modo che le email inviate arrivino proprio al mio indirizzo '[email protected]', come devo procedere? Cioè cosa devo configurare e in che modo?
Grazie per la pazienza!!
 

marino51

Utente Attivo
28 Feb 2013
3.203
207
63
Lombardia
preferisco inviare mail usando la classe PHPmailer,
puoi scaricarla da https://github.com/PHPMailer/PHPMailer
quindi espanderla nella cartella PHPmailer, che posizioni nella cartella "includes" di php.

nello script che segue, cambia le 4 righe indicate con *,
esegui lo script
ciao
Marino

PHP:
<?php

$eM_TO1		= "[email protected]";		// * email del destinatario (anche diverso da Username)
$eM_TOname1	= "MyRecipient";		        // * nome del destinatario

error_reporting(E_ALL);
ini_set('log_errors', 1);
ini_set('error_log', 'MailBoxTest.log');	// nome del file di log

require_once 'PHPMailer/PHPMailerAutoload.php';

$mail = new PHPMailer();

$mail->SMTPDebug = 4;				// attiva il debug dell'invio
$mail->Debugoutput = "error_log";		// registralo nel file di log

$mail->WordWrap = 50;
$mail->IsHTML(true);

$mail->IsSMTP();

$mail->Host       = "smtp.gmail.com";
$mail->Port       = 465;
$mail->SMTPAuth   = true;
$mail->SMTPSecure = "ssl";
$mail->Username   = "[email protected]";	// * utente registrato su gmail
$mail->Password   = "CAMBIAMI";			// * relativa password

$mail->From       = $mail->Username;		// gmail usa sempre l'utente registrato qualunque cosa si metta
$mail->FromName   = "MyMailer";			// nome assegnato all'utente "from"

$mail->AddAddress($eM_TO1, $eM_TOname1);

// rispondere a ... (se fosse necessario rispondere ad utente diverso)
// $mail->AddReplyTo($eM_ReplyTo, $eM_ReplyToName);	

$mail->Subject = " - host : ".$mail->Host." - from : ".$mail->From." - to : ".$eM_TO1." - date : ".date('d-m-Y H:i:s');
$mail->Body    = "<b>".$mail->Subject."</b>";
$mail->AltBody = $mail->Subject;

if($mail->Send()) print "<b>MESSAGGIO INVIATO</b> ".$mail->Subject."<br />";
else              print "<b>ERRORE : MESSAGGIO NON INVIATO</b> ".$mail->Subject."<br />".$mail->ErrorInfo."<br />";
?>
 

marino51

Utente Attivo
28 Feb 2013
3.203
207
63
Lombardia
non ti ho scritto il motivo della mia scelta, ma è facile da spiegare,
con la funzione "mail" di php è necessario impostare gli "headers" per inviare una mail
gli "headers" si scrivono facilmente per una mail semplice,
la scrittura diventa più complessa quando si devono gestire situazioni meno semplici quali, autenticazioni, crittografie, allegati, formati ecc.
PHPmailer provvede da solo, come dire, la soluzione è già pronta, con la possibilità di studiarla se questo è lo scopo, ma migliorando la produttività di chi ne ha bisogno per l'applicazione.
ciao
Marino
 

Manu93

Nuovo Utente
14 Set 2015
27
0
0
Allora ho fatto come hai detto tu, settando il tutto in questo modo:


<?php

$eM_TO1 = " MIA [email protected]";
$eM_TOname1 = "Mario";

error_reporting(E_ALL);
ini_set('log_errors', 1);
ini_set('error_log', 'MailBoxTest.log');

require_once 'PHPMailer/PHPMailerAutoload.php';

$mail = new PHPMailer();

$mail->SMTPDebug = 4;
$mail->Debugoutput = "error_log";

$mail->WordWrap = 50;
$mail->IsHTML(true);

$mail->IsSMTP();

$mail->Host = "smtp.gmail.com";
$mail->Port = 465;
$mail->SMTPAuth = true;
$mail->SMTPSecure = "ssl";
$mail->Username = "MIA [email protected] (ovviamente diversa da quella precedente)";
$mail->Password = "MIA PASSWORD";

$mail->From = $mail->Username;
$mail->FromName = "MyMailer";

$mail->AddAddress($eM_TO1, $eM_TOname1);

// rispondere a ... (se fosse necessario rispondere ad utente diverso)
// $mail->AddReplyTo($eM_ReplyTo, $eM_ReplyToName);

$mail->Subject = " - host : ".$mail->Host." - from : ".$mail->From." - to : ".$eM_TO1." - date : ".date('d-m-Y H:i:s');
$mail->Body = "<b>".$mail->Subject."</b>";
$mail->AltBody = $mail->Subject;

if($mail->Send()) print "<b>MESSAGGIO INVIATO</b> ".$mail->Subject."<br />";
else print "<b>ERRORE : MESSAGGIO NON INVIATO</b> ".$mail->Subject."<br />".$mail->ErrorInfo."<br />";
?>




Questo è il risultato:

ERRORE : MESSAGGIO NON INVIATO - host : smtp.gmail.com - from : "MIA [email protected]" - to : MIA [email protected] - date : 14-10-2015 17:40:45
SMTP connect() failed. https://github.com/PHPMailer/PHPMailer/wiki/Troubleshooting

Non so più cosa fare!
 

marino51

Utente Attivo
28 Feb 2013
3.203
207
63
Lombardia
ho ripreso lo script che hai postato, ho modificato le righe con l'indirizzo mail e la psw con risultato positivo

Codice:
MESSAGGIO INVIATO - host : smtp.gmail.com - from : [email protected] - to : [email protected] - date : 14-10-2015 18:46:44

[14-Oct-2015 18:46:44 Europe/Rome] Connection: opening to ssl://smtp.gmail.com:465, t=10, opt=array (
)
[14-Oct-2015 18:46:45 Europe/Rome] Connection: opened

....

[14-Oct-2015 18:46:45 Europe/Rome] CLIENT -> SERVER: [B][COLOR="#FF0000"]AUTH LOGIN[/COLOR][/B]

[14-Oct-2015 18:46:46 Europe/Rome] SMTP -> get_lines(): $data was ""
[14-Oct-2015 18:46:46 Europe/Rome] SMTP -> get_lines(): $str is "334 VXNjkjvjgvfjgfbWU6"
[14-Oct-2015 18:46:46 Europe/Rome] SMTP -> get_lines(): $data is "334 VXNjkjvjgvfjgfbWU6"
[14-Oct-2015 18:46:46 Europe/Rome] SERVER -> CLIENT: 334 VXNjkjvjgvfjgfbWU6

[14-Oct-2015 18:46:46 Europe/Rome] CLIENT -> SERVER: b3B0aWRlYS5zwvfsv21haWwuY29t

[14-Oct-2015 18:46:46 Europe/Rome] SMTP -> get_lines(): $data was ""
[14-Oct-2015 18:46:46 Europe/Rome] SMTP -> get_lines(): $str is "334 UGFpodjvgscQ6"
[14-Oct-2015 18:46:46 Europe/Rome] SMTP -> get_lines(): $data is "334 UGFpodjvgscQ6"
[14-Oct-2015 18:46:46 Europe/Rome] SERVER -> CLIENT: 334 UGFpodjvgscQ6

[14-Oct-2015 18:46:46 Europe/Rome] CLIENT -> SERVER: QmVfjnjnfddmvZyE=

[14-Oct-2015 18:46:46 Europe/Rome] SMTP -> get_lines(): $data was ""
[14-Oct-2015 18:46:46 Europe/Rome] SMTP -> get_lines(): $str is "235 2.7.0 Accepted"
[14-Oct-2015 18:46:46 Europe/Rome] SMTP -> get_lines(): $data is "235 2.7.0 Accepted"
[14-Oct-2015 18:46:46 Europe/Rome] SERVER -> CLIENT: 235 2.7.0 [B][COLOR="#FF0000"]Accepted[/COLOR][/B]

riportato sopra c'è il log registrato nel file 'MailBoxTest.log'
dovresti trovare questo file nella stessa cartella dove risiede lo script,
scorri il file e vedi dove è situato l'errore in particolare presta attenzione dalla stringa "AUTH LOGIN" in poi,
vedrai anche gli indirizzi mail che hai usato ...

a mio parere stai scrivendo male o un indirizzo o la password
ciao
Marino
 
Ultima modifica:

Manu93

Nuovo Utente
14 Set 2015
27
0
0
Non trovo nessun file 'MailBoxTest.log', l'ho cercato dentro la cartella PHPmailer scaricata dal sito che mi hai linkato tu.
 

marino51

Utente Attivo
28 Feb 2013
3.203
207
63
Lombardia
è nella stessa cartella dello script, non di PHPmailer,
se ci fossero problemi di autorizzazioni, puoi modificare, anteponendo al nome il path ad una cartella scrivibile
PHP:
error_reporting(E_ALL);
 ini_set('log_errors', 1);
 ini_set('error_log', 'MailBoxTest.log');   <<<<<<<<<<<<<<<<<<<<<<<
 

Manu93

Nuovo Utente
14 Set 2015
27
0
0
Credo sia un problema di SMTP che nel mio caso è smtp.gmail.com. Se nella voce "Port" inserisco 465 (quello giusto) sta a caricare all'infinito, mentre se ne inserisco uno sbagliato giustamente esce fuori che il messaggio non è stato inviato. Continuo a smanettare.
 

marino51

Utente Attivo
28 Feb 2013
3.203
207
63
Lombardia
sicuro di aver scaricato l'ultima versione di PHPmailer ?
verifica che nella cartella di PHPmailer ci sia "class.smtp.php"

potrebbe impiegare un poco ad inviare la mail ...
 

Manu93

Nuovo Utente
14 Set 2015
27
0
0
Nulla. Non capisco proprio il problema. Ho controllato il file MailBoxTest.log
Solo che io al posto di avere Europe/Rome] ho [Europe/Berlin]. Cambia qualcosa?
 
Discussioni simili
Autore Titolo Forum Risposte Data
M Errore configurazione motion detection nvr Hikvision DS-7616 IP Cam e Videosorveglianza 0
MarcoGrazia Visual Studio Light, configurazione PHP PHP 5
C Configurazione router Reti LAN e Wireless 0
T Configurazione camere IP Cam e Videosorveglianza 4
E Errore configurazione 18 Dahua Dome POE IP Cam e Videosorveglianza 6
W Configurazione SSID Multipli via GUI su AP Cisco Aironet 1130 AG Reti LAN e Wireless 0
A Configurazione di magento php 7 PHP 1
C Consiglio configurazione IPCam on line su pagina web IP Cam e Videosorveglianza 2
R Configurazione upload ftp su dvr IP Cam e Videosorveglianza 3
bubino8 [WordPress] Perdere Configurazione Option Theme WordPress 4
Michaelweb93 [PHP] Problema configurazione - plugin "Offers for WooCommerce" PHP 0
N [PHP] problema Parse error in file configurazione PHP 3
F Configurazione p2p cam. IP Cam e Videosorveglianza 0
M [Joomla] file di configurazione html Joomla 4
G Configurazione servers con AMAZON WEB SERVICES Offerte e Richieste di Lavoro e/o Collaborazione 0
felino Joomla 3.x - Configurazione PHP Mail Joomla 0
M Continua da "posta elettronica" - Configurazione email php su servizio hosting PHP 2
P configurazione ap con router vodafone Reti LAN e Wireless 6
G Configurazione IP Camera e NVR Zmodo IP Cam e Videosorveglianza 0
filomeni Configurazione router per rete via radio Reti LAN e Wireless 28
D dyndns configurazione IP Cam e Videosorveglianza 3
L Telecamera IP Foscam - configurazione mail IP Cam e Videosorveglianza 8
S DVR e configurazione ftp IP Cam e Videosorveglianza 5
filomeni Accesso configurazione TP-LINK Reti LAN e Wireless 5
V Problema Configurazione Magento in Locale Magento 0
L Configurazione client FTP integrato in Dreamweaver HTML e CSS 3
D Prima configurazione del range extender TL-WA854RE Reti LAN e Wireless 3
G Configurazione Router ed Access Point Reti LAN e Wireless 1
L Configurazione forwarding su router d-link dir 605l Reti LAN e Wireless 1
G Prima configurazione range extender N300 sitecom Reti LAN e Wireless 1
R configurazione ambiente di sviluppo per php PHP 2
felino Distro Ubuntu e Wordpress: qual è la configurazione migliore? Linux e Software 2
Creatt Configurazione Samba su PC windows 8. Linux e Software 0
I Configurazione netgear dgn2200v3 come repeater wifi Reti LAN e Wireless 2
J Problema configurazione plugin facebook social su wordpress WordPress 2
R configurazione tasto paypal PHP 0
M Configurazione WAN su router cisco rv082 Reti LAN e Wireless 1
F problema migrazione sito joomla ad altro provider - non parte configurazione Joomla 3
C Errore configurazione plupload PHP 0
P [Apache] configurazione virtualhost Apache 4
I Configurazione apache per sito alto traffico Apache 0
G Configurazione di phpBB phpBB 1
F Configurazione router d-link (DSL-2640B) per ipcam da remoto Reti LAN e Wireless 27
V Configurazione NAS per gestione remota Reti LAN e Wireless 4
P Configurazione router d-link (DSL-2640B) per inpcam da remoto Reti LAN e Wireless 11
T Configurazione modem Pirelli e Access Point Reti LAN e Wireless 1
minatore Configurazione Easyphp PHP 3
alessandro1997 Nuova configurazione hardware Hardware 2
S File di configurazione PHP PHP 2
G configurazione link su pagina web HTML e CSS 1

Discussioni simili