Newsgroup: it.comp.www.php
Titolo: phpmailer XAMMP e Windows 10

Scusate ma sto impazzendo.
 
Ho da poco aggiornato il sistema operativo ed ora ho problemi nel 
testare l'invio mail da locale.
 
Ho script che su win 8, con lo stesso ambiente locale, giravano 
perfettamente e su win 10 hanno problemi di connessione SMTP -> SMTP 
connect() failed.
 
Ho cercato in rete ma non ho trovato soluzioni.
 
Il codice che utilizzo per il test è il seguente
 
     //INVIO MAIL A: utente
     $mail = new PHPMailer(true);
     $mail->SMTPDebug  = 1;
$mail->IsSMTP();
$mail->SMTPAuth = true;
$mail->SMTPSecure = 'ssl';              // Use SSL
$mail->Host = '
smtp.gmail.com
';         // Server SMTP
$mail->Port = 465;                      // Porta SMTP
$mail->Username = '
indi...@gmail.com
';   // SMTP account username
$mail->Password = 'xxxxxxxxxxxxxxxx';
     $mail->setFrom('
indi...@gmail.com
', 'Mailer');
     $mail->AddAddress('
ma...@destinatario.com
','utenteTest');
     $mail->isHTML(false);
     $mail->Subject = "TEST da LOCALE";
     $mail->Body = "Test Invio Mail";
     $mail->Send();
     echo "Message Sent OK\n";
} catch (phpmailerException $e) {
     echo $e->errorMessage();
} catch (Exception $e) {
     echo $e->getMessage();
}
 
L'unica differenza sembra essere il sys op.
 
Qualche consiglio?
Grazie in anticipo.
 
---
Questa email Ã¨ stata esaminata alla ricerca di virus da AVG.
http://www.avg.com
 
 

Ho trovato la soluzione la posto qui nel caso servisse ad altri.
Ho risolto inserendo:
 
$mail->SMTPOptions = array(
     'ssl' => array(
         'verify_peer' => false,
         'verify_peer_name' => false,
         'allow_self_signed' => true
     )
);
 
Non ho però capito il motivo (ripeto in win 8 andava in win 10 no, gli 
ambienti di sviluppo sono identici).


 );
 
Non ho idea del perche` Windows si lamenti perche` non uso Windows, ma
cosi` hai disattivato la verifica del certificato SSL del server di
posta, quindi ti stai esponendo al rischio che qualcuno finga di essere
GMail e intercetti tutti i messaggi che mandi.
 
Bye.

ambienti di sviluppo sono identici).
 
O sono cambiate in modo disastroso le librerie del PHP, oppure il "google"
a cui ti colleghi - e basta che tu legga le opzioni che hai messo - usa un
peername non valido e un certificato self-signed.
 
Ovvero, *non* ti stai collegando a Google ma a qualcuno che si spaccia per
Google.
 
Aaaaaah, aspetta. Oppure hai un *ANTIVIRUS* che vuole esaminare le mail in
transito, e per farlo (dato che sono trasmesse criptate) non ha altro modo
che spacciarsi per Google. Hmm?
 
Leonardo
-- 
 
A terrible beauty is born.
                                     - W. B. Yeats, Easter 1916

Grazie per la risposta,
in realtà è un codice che uso in locale in fase di dev giusto per 
testare che l'invio mail funzioni (quindi non c'è nulla di rilevante 
nelle mail di test)
 
In produzione questo codice non viene eseguito.
 
Lo reputi ugualmente pericoloso?



Volevo aggiornare il fatto che questa soluzione, da un giorno all'altro, 
non è più valida ed ho nuovamente problemi di invio mail da localhost 
con errore:
 
fsockopen(): SSL operation failed with code 1. OpenSSL Error messages: 
error:14090086:SSL routines:ssl3_get_server_certificate:certificate 
verify failed i.
 
Non ho cambiato versione di php,
non ho cambiato le librerie phpmailer,
non ho cambiato antivirus.
Che può essere successo e come posso risolvere?


Che può essere successo e come posso risolvere?
 
A quale IP ti colleghi?
 
	ping 
smtp.gmail.com
 
 
che IP numerico ti dà?


Ciao,
il ping dice 74.125.206.108
 
non ci sto capendo più nulla... pensavo fosse l'antivirus come dicevi 
nel tuo ultimo post quindi l'ho tolto e magicamente ha iniziato a 
funzionare.
 
Poi ho messo un altro antivirus da AVG sono passato ad AVIRA ed il 
problema è tornato.
 
Allora ho tolto anche questo antivirus ma il problema rimane...
 
Non so più che pesci pigliare


problema è tornato.
 
OK, descrizione sintetica del problema: per mandare una mail, Windows
o PHP devono comunque stabilire una connessione con il server.
 
Questa connessione viaggia criptata e protetta da un certificato, per
cui se non conosci il certificato, non puoi decifrarla. E quindi - se
sei un antivirus - neanche puoi sapere se nella mail c'è, il virus, o
non c'è. Ossia, rebus sic stantibus, gli antivirus non potrebbero mai
funzionare.
 
Per funzionare adottano un trucco - intercettano la connessione, e, a
chi l'ha aperta, giurano sulla loro mamma di essere GMail. E a GMail,
giurano sulla Bibbia di essere Windows (o PHP). La connessione fra il
client e l'antivirus però non può essere protetta dal certificato che
usa GMail, perché l'antivirus non lo possiede (non essendo GMail...).
 
E così l'antivirus ti manda un certificato farlocco, e - per impedire
al client di accorgersene - "inietta" i necessari root cert nell'OS o
nel client... ammesso che lo conosca.
 
Siccome PHP non è un client conosciuto o supportato questa maskirovka
non avviene, e il PHP si accorge che lo stanno prendendo pel sellino;
e da lì l'errore che ti compare.
 
La cosa migliore che *mi sembra* tu possa fare è cercare un antivirus
dove la scansione della mail sia disattivabile senza riavvio (per es.
è il caso di NOD32 Antivirus, visto che ce l'ho e ho controllato. Non
so se ce ne siano altri: mi pare però molto probabile di sì).
 
Poi disinstalli e ripulisci il sistema da AVG e Avira, riavvii, e vai
a installare l'antivirus più flessibile.
 
La ripulitura serve perché questa faccenda di intercettare l'SSL è il
massimo della "cosa spurca", e conosco un paio di sventurati che dopo
aver provato tre antivirus uno dopo l'altro, si sono trovati senza la
possibilità di accedere alla mail (a dire il vero successo con XP Pro
SP3, in entrambi i casi ripulita la macchina con LSPFix - che però io
non so se funzioni con Win10).
 
In alternativa, anche una macchina virtuale per lo sviluppo - secondo
me almeno - è una strada da indagare. Io ce n'ho varie con VirtualBox
e non me ne sono mai pentito. Le connessioni da lì dentro passano, e,
oltretutto, puoi creare una VM con l'identico ambiente della macchina
di produzione.


Ti ringrazio per l'esaustivo post, anche non risolvessi ho imparato 
qualcosa.
 
Proverò la soluzione che mi hai indicato.
Grazie