Mail con funzione mail() riconosciute come spam

[email protected]

Utente Attivo
9 Mag 2015
126
2
18
Ciao a tutti ,

vi scrivo per chiedervi supporto per il seguente problema :

da anni utilizzo la funzione mail ( ) per spedire una e-mail automatica ogni qual volta un utente compila un registro on-line . Verso la fine di ottobre però Gmail ha cominciato a considerare quelle mail come spam , con il risultato che gli utenti hanno l'impressione di non ricevere più comunicazioni

Qualcuno di voi sa cosa può essere intervenuto ? Lato mio non è cambiato assolutamente nulla .

Ho provato a googleare in giro , ma non arrivo a nulla !!!

VI RINGRAZIO IN ANTICIPO ..... e vi indico di seguito lo script che utilizzo :


PHP:
$destinatario = "[email protected], $destinatarimail , $mail_1, $mail_2, $mail_3";
$mittente = "Registro Interventi". "<[email protected]>";
$oggetto = "Inserito nuovo documento";
$messaggio =  '<!DOCTYPE html>
                    <html lang=3D"en">
                        <head> <meta http-equiv=3D "Content-Type"
                                content=3D"text/html; charset=3Dutf-8" /> <meta name=3D"viewport" content=3D"
                                width=3Ddevice-width, initial-scale=3D1.0"/>
                    
                        </head>
                    <body>
              
  <table border="1" cellpadding="8" border-color : #000000;>
 
..........SEGUE  CORPO DELLA TABELLA HTML
 
   </table>
  </body>
</html>';

// Valorizzo le variabili relative all'allegato
$allegato = $_FILES['foto']['tmp_name'];
$allegato_type = $_FILES['foto']['type'];
$allegato_name = $_FILES['foto']['name'];

// Creo altre due variabili ad uso interno
$headers = "From: " . $mittente;
$msg = "";

// Verifico se il file è stato caricato correttamente via HTTP
// In caso affermativo proseguo nel lavoro...
if (is_uploaded_file($allegato))
{
  // Apro e leggo il file allegato
  $file = fopen($allegato,'rb');
  $data = fread($file, filesize($allegato));
  fclose($file);

  // Adatto il file al formato MIME base64 usando base64_encode
  $data = chunk_split(base64_encode($data));

  // Genero il "separatore"
  // Serve per dividere, appunto, le varie parti del messaggio.
  // Nel nostro caso separerà la parte testuale dall'allegato
  $semi_rand = md5(time());
  $mime_boundary = "==Multipart_Boundary_x{$semi_rand}x";
 
  // Aggiungo le intestazioni necessarie per l'allegato
  $headers .= "\nMIME-Version: 1.0\n";
  $headers .= "Content-Type: multipart/mixed;\n";
  $headers .= " boundary=\"{$mime_boundary}\"";

  // Definisco il tipo di messaggio (MIME/multi-part)
  $msg .= "This is a multi-part message in MIME format.\n\n";

  // Metto il separatore
  $msg .= "--{$mime_boundary}\n";

  // Questa è la parte "testuale" del messaggio
  //$msg .= "Content-Type: text/html; charset=\"iso-8859-1\"\n";
 
    $msg .= "Content-Type: text/html; charset=\"UTF-8\"\n";
    $msg .= "Content-Transfer-Encoding: 7bit\n\n";
  $msg .= $messaggio . "\n\n";

  // Metto il separatore
  $msg .= "--{$mime_boundary}\n";

  // Aggiungo l'allegato al messaggio
  $msg .= "Content-Disposition: attachment; filename=\"{$allegato_name}\"\n";
  $msg .= "Content-Transfer-Encoding: base64\n\n";
  $msg .= $data . "\n\n";

  // chiudo con il separatore
  $msg .= "--{$mime_boundary}--\n";
}
// se non è stato caricato alcun file
// preparo un semplice messaggio testuale
else
{
 $msg = $dascrivere;
                                                                                                                                
                                                                                                                                                                                                       
$headers = "MIME-Version: 1.0\r\n";                                                                                                                                  
$headers .= "From: Registro Interventi <[email protected]> \r\n";                                                     
$headers .= "Content-Type: text/html; charset=\"iso-8859-1\"\r\n";                                                                               
$headers .= "Content-Transfer-Encoding: 7bit\r\n";                                                                                                            
                                                                        
}

// Invio la mail

if (mail($destinatario, $oggetto, $msg, $headers))
{
  echo "<p>Mail inviata con successo!</p>";
}else{
  echo "<p>Errore!</p>";
}
 

Tommy03

Utente Attivo
6 Giu 2018
606
57
28
18
Vicenza
Anch'io usavo la funzione mail(), ma è molto limitata e c'erano un sacco di problemi con spam o cose varie. Io ti consiglio di passare a usare phpmailer, personalmente mi trovo benissimo
 

[email protected]

Utente Attivo
9 Mag 2015
126
2
18
Anch'io usavo la funzione mail(), ma è molto limitata e c'erano un sacco di problemi con spam o cose varie. Io ti consiglio di passare a usare phpmailer, personalmente mi trovo benissimo

Ciao Tommy03, grazie per la risposta ...

ora cerco qualche informazione su phpmailer ...... noon l'ho mai usato .... non lo conosco ......
Ma secondo te , rispetto al mio codice , c'è molto da modificare ?
 

[email protected]

Utente Attivo
9 Mag 2015
126
2
18
È una libreria da includere, ma una volta installata è semplicissima da usare
Ciao Tommy03 .....
E' da ieri che stò provando con phpmailer...... ma senza risultati !!!! dopo veri tentativi ora ricevo il seguente errore :

You must provide at least one recipient email address. ......... nonostante il destinatario sia inserito

Inoltre quando dichiaro $mail , devo farlo così: $mail = new PHPMailer\PHPMailer\PHPMailer; perchè se lo faccio come ho visto in tutti gli esempi ( $mail = new PHPMailer; ) ... mi dice che non trova quella classe

Ti riporto il codice che uso ...... MI DARESTI UNA MANO ?????? ......... Grazie mille in anticipo......

PHP:
include ("class.phpmailer.php");

include ("Exception.php");

include ("SMTP.php");

$mittente = "[email protected]";

$nomemittente = "Richiesta Informazioni";

$destinatario = "[email protected]";

$ServerSMTP = "smtp.gmail.com" ; //server SMTP

$corpo_messaggio = "Grazie per averci contattato!!\n"
    ."Cordiali Saluti,\n Servizio Clienti";

$mail = new PHPMailer\PHPMailer\PHPMailer;

$mail->IsHTML(true); // messaggio in HTML

$mail->IsSMTP(); // utilizza la classe SMTP invece del comando mail() di php

$mail->SMTPAuth   = 'true';     // abilita autenticazione SMTP

$mail->SMTPKeepAlive = 'true';

$mail->SMTPSecure = 'tls'; // abilitiamo il protocollo ssl richiesto per Gmail

$mail->Host = 'smtp.gmail.com'; // ecco il server smtp di google

$mail->Port = 587; // la porta che dobbiamo utilizzare

$mail->Username   ='[email protected]';      // utente server SMTP dedicato

$mail->Password   = 'password';    // password server SMTP dedicato

$mail->From   = $mittente;

$mail->FromName = $nomemittente;

$mail->AddAddress = ('[email protected]');

$mail->Subject='Prova formato HTML';

$mail->Body = "<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0
    Transitional//EN' 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd'>
<HTML><body>'.$corpo_messaggio.'</body></html>";

$mail->AltBody = "$corpo_messaggio";

if(!$mail->Send()) {
    echo " errore nella spedizione: $mail->ErrorInfo \n"
           ."MITTENTE : $mail->From \n"
           ."DESTINATARIO : $mail->AddAddress";
} else {
    echo "messaggio inviato correttamente";
}
 

Tommy03

Utente Attivo
6 Giu 2018
606
57
28
18
Vicenza
Ti posto il codice che a me funziona:
PHP:
<?php
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\SMTP;
require 'includes/vendor/autoload.php';
$mail = new PHPMailer();
$mail->isSMTP();
$mail->Host = 'smtp.gmail.com';
$mail->Port = 587;
$mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS;
$mail->SMTPAuth = true;
$mail->Username = '[email protected]';
$mail->Password = '*******';
$mail->setFrom('[email protected]', 'Amministrazione sito');
$mail->addReplyTo('[email protected]', 'Amministrazione sito');
$mail->addAddress('[email protected]', 'Nome destinatario');
$mail->Subject = 'Prova email';
$mail->msgHTML("<h1>Messaggio</h1>");
$mail->AltBody = 'Il tuo messaggio';
if (!$mail->send()) {
    echo 'Mailer Error: ' . $mail->ErrorInfo;
} else {
}
}

?>

Come lo hai installato PHPMailer?
Io ho seguito questa guida, in pratica:
1. Ho installato il composer da questo link
2. Poi ho creato una cartella nella root principale del sito chiamata "includes"
3. Poi, dal Prompt dei comandi, prima navighi nella cartella di riferimento (ad esempio: "cd c:\xampp\includes"), schiacci Invio e dopo scrivi "composer require phpmailer/phpmailer"

Lo so è un po' lungo come procedimento ma alla fine ne vale la pena
 

[email protected]

Utente Attivo
9 Mag 2015
126
2
18
Ti posto il codice che a me funziona:
PHP:
<?php
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\SMTP;
require 'includes/vendor/autoload.php';
$mail = new PHPMailer();
$mail->isSMTP();
$mail->Host = 'smtp.gmail.com';
$mail->Port = 587;
$mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS;
$mail->SMTPAuth = true;
$mail->Username = '[email protected]';
$mail->Password = '*******';
$mail->setFrom('[email protected]', 'Amministrazione sito');
$mail->addReplyTo('[email protected]', 'Amministrazione sito');
$mail->addAddress('[email protected]', 'Nome destinatario');
$mail->Subject = 'Prova email';
$mail->msgHTML("<h1>Messaggio</h1>");
$mail->AltBody = 'Il tuo messaggio';
if (!$mail->send()) {
    echo 'Mailer Error: ' . $mail->ErrorInfo;
} else {
}
}

?>

Come lo hai installato PHPMailer?
Io ho seguito questa guida, in pratica:
1. Ho installato il composer da questo link
2. Poi ho creato una cartella nella root principale del sito chiamata "includes"
3. Poi, dal Prompt dei comandi, prima navighi nella cartella di riferimento (ad esempio: "cd c:\xampp\includes"), schiacci Invio e dopo scrivi "composer require phpmailer/phpmailer"

Lo so è un po' lungo come procedimento ma alla fine ne vale la pena

Grazie Mille Tommy ! .... ma il problema non è che la procedura è lunga , ma il fatto che io non uso php in locale , ma faccio tutto utilizzando altervista .... e questo pare che complichi un po le cose

Ho provato e rimanipolato il tuo script in tutte le salse .... ma nulla ! .... Certo qualcosa rispetto alle prime prove l'ho tirato fuori .... ma ora sono arenato su un errore " SMTP Failed : Cannot Autenticate ! ..... anche se deve essere un "falso-positivo" ... perchè le credenziali sono corrette

Prova ... dopo ... prova .... è dalle 19:00 che faccio tentativi ...... ora sono le 02 passate ....... domani torno all'attacco !!!

GRAZIE ANCORA PER IL SUPPORTO !
 

Tommy03

Utente Attivo
6 Giu 2018
606
57
28
18
Vicenza
Ah, cercando un po' ho letto che altervista non supporta PHPMailer, ma utilizza, come unica alternativa a mail(), il servizio esterno SendGrid.
A questo link puoi trovare un tutorial su come usarlo.
 
  • Like
Reactions: [email protected]

[email protected]

Utente Attivo
9 Mag 2015
126
2
18
Ah, cercando un po' ho letto che altervista non supporta PHPMailer, ma utilizza, come unica alternativa a mail(), il servizio esterno SendGrid.
A questo link puoi trovare un tutorial su come usarlo.

@Tommy03 ..........E' PERFETTO SendGRID !!!!!!!......

l'ho configurato secondo le mie esigenze .... e fa egregiamente tutto ciò che deve !!!! :)

Grazie mille per il preziosissimo supporto !!! .... Mi hai dato una grande mano !!!!!

Grazie !
 
Discussioni simili
Autore Titolo Forum Risposte Data
A [PHP] Problema invio mail con funzione mail() PHP 3
L problema email con funzione mail PHP 1
P Problema con la funzione mail PHP 13
E aiuto form allegato.con funzione mail PHP 8
G Problemi con la funzione "mail" PHP 3
R Invio mail con allegati multipli PHP 0
R Invio mail con allegati da directory PHP 1
G Con Microsoft Outlook 2016 come si possono cancellare le mail doppie? Posta Elettronica 0
M configurare mail register.it (con 1000 invii/die) su Outlook Posta Elettronica 0
Marti1! Problema con casella mail cancellata Posta Elettronica 3
G Invio mail con php da dati prelevati da un database PHP 9
I [PHP] inviare form con allegato tramite una mail PHP 1
G [PHP] Creare mail con allegato nascosto e bottone di richiamo PHP 0
A [PHP] Inviare mail con piu immagini allegate PHP 6
A [PHP] RISOLTO Invio Mail con Tabella PHP 2
G Invio Mail con PHPMailer, problemi SMTP PHP 7
E [PHP] mail inviata anche con campi obbligatori non compilati PHP 9
Z Limite invio newsletter con PHP - mail() PHP 4
F Invio Mail con Javascript Javascript 25
F ciao, sono ferro e ho bisogno di aiuto per problemi con la mail di alice.it Presentati al Forum 1
A [PHP] Blocco mail spam con regex PHP 2
filomeni Problema con mail() in html PHP 4
Gabriele Visioli Utilizzo Newsletter con E-mail Leggi, Normative e Fisco 0
voldemort Record SPF con softfail (ma arriva qualche mail forged) Posta Elettronica 1
V Spedire mail con PHP: come conosco i dati? PHP 8
P invio mail da form con dati php PHP 7
A Compilazione file Excel con una E-mail PHP 1
M Come inviare due mail diverse con phpmailer PHP 6
M collegare tasti radio con e mail PHP 4
M Inviare mail con PHP tramite Mozilla PHP 3
S Problema con Mail PHP 3
M Inviare mail con href PHP 2
S Form invio mail html, con invio tramite file denominato invio.php PHP 8
asevenx link cliccabile che non funziona con invio mail PHP 1
F Problemi con ricezione mail dal form PHP 8
M Invio mail con destinatari da mysql con inserimento di nome e cognome PHP 6
M non ci do fuori con il form mail PHP 1
M Form mail con dreamweaver cs6 PHP 2
M pagina registrazione con mail contenente link di attivazione profilo PHP 1
V problema con mail e php PHP 6
M Mail in html con allegato non coesistono? PHP 6
L Sviluppare form mail con allegato PHP 6
F inviare una mail con php mailer PHP 3
I [Risolto] Problemi invio e-mail con CDOSYS con domini @live.it Classic ASP 4
L Form con invio mail PHP 1
L verifica mail in db con jquery e ajax. Aiuto jQuery 9
P Invio multiplo mail con phpmailer PHP 5
M Adattare script di "form mail con upload file" al mio form mail HTML! PHP 7
M form mail con allegato e immagine Classic ASP 4
F Problema con mail in SPAM Hosting 2

Discussioni simili