[PHP] Invio Mail

AC1

Utente Attivo
13 Nov 2017
48
2
8
Barletta
Buongiorno, sono tre giorni che sto impazzendo sulla realizzazione dell' invio mail tramite php.

Ho provato con la funzione <code>mail()</code> ma non riesco a trovare nulla di esaustivo sulla configurazione corretta del php.ini/ini_set() per gmail;

poi su internet ho trovato la class PHPMAiler, ma anche con questa nulla, in quanto ci sono tante configurazioni diverse per la stessa cosa ma che non funzionano mai o il file sorgente che scarico è corrotto o non funzionante in maniera corretta; nelle varie modifiche di questa classe, sono arrivato al punto che il server mi dice "errore nella spedizione: Extension missing: openssl"

e con php.info() ottengo
OpenSSL support disabled (install ext/openssl)

ma non riesco ad andare oltre


Come posso fare ???
 

AC1

Utente Attivo
13 Nov 2017
48
2
8
Barletta
Ottengo questo errore:

Message could not be sent. Mailer Error: SMTP Error: Could not authenticate.


questo è il codice

PHP:
<?php
 
 // Import PHPMailer classes into the global namespace
 // These must be at the top of your script, not inside a function
 use PHPMailer\PHPMailer\PHPMailer;
 use PHPMailer\PHPMailer\Exception;
 
 require 'PHPMailer/src/Exception.php';
 require 'PHPMailer/src/PHPMailer.php';
 require 'PHPMailer/src/SMTP.php';
 
 // Instantiation and passing `true` enables exceptions
 $mail = new PHPMailer(true);
 
 try {
     //Server settings
     //$mail->SMTPDebug = SMTP::DEBUG_SERVER;                      // Enable verbose debug output
     $mail->isSMTP();                                            // Send using SMTP
     $mail->Host       = 'smtp.gmail.com';                    // Set the SMTP server to send through
     $mail->SMTPAuth   = true;                                   // Enable SMTP authentication
     $mail->Username   = 'user';                     // SMTP username
     $mail->Password   = 'pwd';                               // SMTP password
     $mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS;         // Enable TLS encryption; `PHPMailer::ENCRYPTION_SMTPS` also accepted
     $mail->Port       = 587;                                    // TCP port to connect to
 
     //Recipients
     $mail->setFrom('mail_mittente@gmail.com', 'Mailer');
     $mail->addAddress('mail_destinatario@gmail.com', 'Joe User');     // Add a recipient
     //$mail->addAddress('ellen@example.com');               // Name is optional
     //$mail->addReplyTo('info@example.com', 'Information');
     //$mail->addCC('cc@example.com');
     //$mail->addBCC('bcc@example.com');
 
     // Attachments
     //$mail->addAttachment('/var/tmp/file.tar.gz');         // Add attachments
     //$mail->addAttachment('/tmp/image.jpg', 'new.jpg');    // Optional name
 
     // Content
     $mail->isHTML(true);                                  // Set email format to HTML
     $mail->Subject = 'Here is the subject';
     $mail->Body    = 'This is the HTML message body <b>in bold!</b>';
     $mail->AltBody = 'This is the body in plain text for non-HTML mail clients';
 
     $mail->send();
     echo 'Message has been sent';
 } catch (Exception $e) {
     echo "Message could not be sent. Mailer Error: {$mail->ErrorInfo}";
 }

?>


Devo modificare anche in SMTP.php ????
 

AC1

Utente Attivo
13 Nov 2017
48
2
8
Barletta
Message could not be sent. Mailer Error: SMTP connect() failed. https://github.com/PHPMailer/PHPMailer/wiki/Troubleshooting


come risolvo ??? non ne esco piu


Sto vedendo in questo link e sembrerebbe un problema di ssl ma non capisco, nel php.ini ho tolto il ";" per abilitarlo, ho provato ad inserire

PHP:
echo ( extension_loaded ( ' openssl ' )? ' SSL caricato ' : ' SSL non caricato ' ) .  " \ n " ;
e ottengo


SSL non caricato \ n Message could not be sent. Mailer Error: SMTP connect() failed. https://github.com/PHPMailer/PHPMailer/wiki/Troubleshooting
 
Ultima modifica:

AC1

Utente Attivo
13 Nov 2017
48
2
8
Barletta
prova a guardare qui,
https://forum.mrwebmaster.it/thread...o-offerto-da-vari-provider.40100/#post-158302
trovi uno zip che contiene uno script con phpmailer funzionante
trovi anche le definizioni per accedere al servizio gmail,

ricorda solo che devi abilitare gmail ad accettare le app poco sicure, considerando tale, l'accesso con script php

nulla stessi problemi, le configurazioni degli esempi di questi link li mettevo anche io, ma il problema mi rimane
 

AC1

Utente Attivo
13 Nov 2017
48
2
8
Barletta
Cerco di farvi capire meglio in modo da trovare una soluzione;

la web application che sto realizzando risiede su un server con window server 2012, nella gestione del IIS del server ho questa schermata

Schermata 2019-10-28 alle 15.57.05.png



ho provato a configurarla con i dati corretti ma niente;

cosi ho iniziato a modificare il php.ini

Schermata 2019-10-28 alle 15.59.15.png



per utilizzare la funzione mail() di php ma niente.


Cosi ho cercato una soluzione con PHPMailer ma sembra non funzionare.....


ora vorrei capire se è un problema di server o di codice.

PS. la mail definitiva non sarà gmail ma aruba o, in alternativa, se è possibile realizzare una mail locale sul server.... anche se non so come fare adesso.
 

macus_adi

Utente Attivo
5 Dic 2017
1.265
82
48
IT/SW
Aruba mette a disposizione le mail, non dovrebbe dare (se non ricordo male, in acquisto dominio + server) la possibilità di gestire un NS per MX diverso da quello previsto.

Cosa diversa se hai acquistato la gestione DNS + Server, in quel caso dovrebbe funzionare, a patto di installare e configurare il tutto a regola d'arte:
DNS
RDNS
SPF
DMARK
DKIM

Se hai problemi con servizi pronti, lascia perdere questa strada, ti fai solo del male per non concludere niente.

Con la config base di gmail, la libreria funziona alla perfezione, testata e con soluzione postata in alto ma....
Effettua il login a google, imposta i permessi delle app e disabilita il controllo a 2 fattori.
Utilizzando smpt di aruba, non hai problemi con la libreria!


ora vorrei capire se è un problema di server o di codice
Probabilmente di "server" meglio dire DNS, non ha i record corretti!!!
 
  • Like
Reactions: AC1

AC1

Utente Attivo
13 Nov 2017
48
2
8
Barletta
Aruba mette a disposizione le mail, non dovrebbe dare (se non ricordo male, in acquisto dominio + server) la possibilità di gestire un NS per MX diverso da quello previsto.

Cosa diversa se hai acquistato la gestione DNS + Server, in quel caso dovrebbe funzionare, a patto di installare e configurare il tutto a regola d'arte:
DNS
RDNS
SPF
DMARK
DKIM

Se hai problemi con servizi pronti, lascia perdere questa strada, ti fai solo del male per non concludere niente.

Con la config base di gmail, la libreria funziona alla perfezione, testata e con soluzione postata in alto ma....


Utilizzando smpt di aruba, non hai problemi con la libreria!



Probabilmente di "server" meglio dire DNS, non ha i record corretti!!!

ho fatto la disabilitazione dell'autenticazione a 2 fattori, ho attivato invio mail da siti meno sicuri....


comunque ora ho resettato tutto e sto ripercorrendo la strada da zero,

sto usando la funzione mail() di php modificando il php.ini

e ho attenuto questo errore:

Warning: mail(): SMTP server response: 530 5.7.0 Must issue a STARTTLS command first. b62sm108878wmc.13 - gsmtp in C:\inetpub\wwwroot\prove\mail.php on line 22
Errore. Nessun messaggio inviato.

nel php.ini ho inserito

SMTP = smtp.gmail.com
smtp_port = 587
sendmail_from = mymail@gmail.com
 

AC1

Utente Attivo
13 Nov 2017
48
2
8
Barletta
SSL no STARTTLS! su porta 465 se non ricordo male!

Warning: mail(): Failed to connect to mailserver at "smtp.gmail.com" port 465, verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set() in C:\inetpub\wwwroot\prove\mail.php on line 22
Errore. Nessun messaggio inviato.
 

AC1

Utente Attivo
13 Nov 2017
48
2
8
Barletta
Funzione Mail
Message has been sent


MAIL INVIATA !!!!!!!!!!:D

Faccio una guida dettaglia e la riposto qui, i posteri ci ringrazieranno.

Grazie a voi ragazzi per il sostegno e l'aiuto costante;)
 

AC1

Utente Attivo
13 Nov 2017
48
2
8
Barletta
PHPMailer

1. download PHPMailer -> https://github.com/PHPMailer/PHPMailer


2. mail.php

PHP:
<?php
 
 // Import PHPMailer classes into the global namespace
 // These must be at the top of your script, not inside a function
 use PHPMailer\PHPMailer\PHPMailer;
 use PHPMailer\PHPMailer\Exception;
 
 require 'PHPMailer/src/Exception.php';
 require 'PHPMailer/src/PHPMailer.php';
 require 'PHPMailer/src/SMTP.php';
 
 // Instantiation and passing `true` enables exceptions
 $mail = new PHPMailer(true);
 
 try {
     //Server settings
     //$mail->SMTPDebug = SMTP::DEBUG_SERVER;                      // Enable verbose debug output
     $mail->isSMTP();                                            // Send using SMTP
     $mail->Host       = 'smtp.gmail.com';                    // Set the SMTP server to send through
     $mail->SMTPAuth   = true;                                   // Enable SMTP authentication
     $mail->Username   = 'user';                     // SMTP username
     $mail->Password   = 'pwd';                               // SMTP password
     $mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS;         // Enable TLS encryption; `PHPMailer::ENCRYPTION_SMTPS` also accepted
     $mail->Port       = 587;                                    // TCP port to connect to
 
     //Recipients
     $mail->setFrom('mail_mittente@gmail.com', 'Mailer');
     $mail->addAddress('mail_destinatario@gmail.com', 'Joe User');     // Add a recipient
     //$mail->addAddress('ellen@example.com');               // Name is optional
     //$mail->addReplyTo('info@example.com', 'Information');
     //$mail->addCC('cc@example.com');
     //$mail->addBCC('bcc@example.com');
 
     // Attachments
     //$mail->addAttachment('/var/tmp/file.tar.gz');         // Add attachments
     //$mail->addAttachment('/tmp/image.jpg', 'new.jpg');    // Optional name
 
     // Content
     $mail->isHTML(true);                                  // Set email format to HTML
     $mail->Subject = 'Here is the subject';
     $mail->Body    = 'This is the HTML message body <b>in bold!</b>';
     $mail->AltBody = 'This is the body in plain text for non-HTML mail clients';
 
     $mail->send();
     echo 'Message has been sent';
 } catch (Exception $e) {
     echo "Message could not be sent. Mailer Error: {$mail->ErrorInfo}";
 }

?>
3. nell'account Gmail ->Impostazioni->Sicurezza
-controllare il blocco del dispositivo che ha effettuato l'accesso dichiarando che siamo stati noi.
Eventi recenti relativi alla sicurezza

-disabilitare controllo a due fattori

-consenso ad app meno sicure
Accesso app meno sicure