Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 21
  1. #1
    Utente di HTML.it L'avatar di gasmor
    Registrato dal
    Apr 2004
    Messaggi
    1,768

    email segnalata come spam

    Ciao a tutti,

    è un problema ricorrente che è già stato ampiamente trattato sia in questo che in altri forum tuttavia non riesco a trovare la soluzione ideale per inviare email che non finiscano nella cartella posta indesiderata di host come hotmail, yahoo, libero ecc.

    ho provato tantissime soluzioni proposte da altri utenti in altri topic ma sembra che non ci sia niente da fare.

    Qualcuno che abbia risolto il problema potrebbe gentilmente dirmi quali sono gli header corretti da inserire nella funzione mail?

    grazie
    Hai provato a creare un sito con Jaaxo Cms PHP5? new!

  2. #2
    Per mandare una mail che passa al 100% (io ti dico 100% perché l'ho provata a mandare sulle peggio caselle ed è sempre arrivata) è usare gli oggetti Mail e Mail_mime.

    Sono entrambe oggetti del pacchetto pear.

    La cosa da spiegare è lunga, ti mando scrivo un scriptino che faccio eseguire da shell al mio somarello quando mi cambia l'ip.

    Codice PHP:
    <?php

    //Includo gli oggetti Mail.php e Mail/mime.php
    //Attenzione che questi oggetti devono essere prima installati
    //da pear, se non si possono installare, si possono sempre
    //utilizzare richiamandoli dalla cartella dove sono stati messi
    //ma funzionano in maniera un pò problematica così.
    //Se non erro bisogna installare Net_SMTP (sempre di
    //pear) altrimenti potrebbe non riuscire l'invio.

    require_once("Mail.php");
    require_once(
    "Mail/mime.php");

    //Carico i destinatari
    $recipients[] = "indirizzo1@domain.it";
    $recipients[] = "indirizzo2@domain.it";
    $recipients[] = "indirizzo3@domain.it";

    //Quì risiede il corpo del messaggio
    $root="/var/www/mail/";

    //Apro il messaggio e ne carico il contenuto dentro
    //$contents, nb il messaggio è in HTML
    $filename $root."somarello_t.html";
    $handle fopen($filename"r");
    $contents fread($handlefilesize($filename));
    fclose($handle);

    //Carico un altro ipotetico corpo del messaggio
    //in solo testo
    $filename $root."somarello.txt";
    $handle fopen($filename"r");
    $contents2 fread($handlefilesize($filename));
    fclose($handle);

    //Parametri di configurazione necessari (cambiare l'smtp
    //se non si usa tin)
    $params["host"] = "mail.tin.it";
    $params["port"] = "25";
    $params["auth"] = false;
    $params["username"] = "";
    $params["password"] = "";

    //Apro questi due file, cache contiene l'ultimo mio indirizzo
    //ip, flush viene aggiornato ogni 20 minuti con l'indirizzo
    //attuale
    $flu=fopen("/pers/ip-sender/flush","r");
    $cac=fopen("/pers/ip-sender/cache","r");
    $r_flu=fgets($flu);
    $r_cac=fgets($cac);

    //sostituisco all'interno dei due messaggi il tag @@ip@@
    //con l'indirizzo ip
    $contents=str_replace("@@ip@@",$r_flu,$contents);
    $contents2=str_replace("@@ip@@",$r_flu,$contents2);

    //Se cache e flush sono diversi allora il mio ip è mutato
    //e procedo all'invio
    if(strcmp(trim($r_flu),trim($r_cac))!=0){
        
    fclose($cac);
        
    $cac=fopen("/pers/ip-sender/cache","w");
        
    //scrivo dentro a cache il nuovo indirizzo
        
    fwrite($cac,$r_flu);
        
    //Processo uno ad uno tutti i miei destinatari
        
    foreach($recipients as $k => $v){
            
    //Creo l'oggetto Mail, il tipo d'invio è
            //smtp, la configurazione è in params
            
    $mail_object =& Mail::factory("smtp"$params);
            
    //Creo l'oggetto mail_mime, va creato passandogli
            //i caratteri dell'accapo
            
    $mail_mime=new Mail_mime("\r\n");
            
    //Creo un array che sarà l'header del messaggio
            
    $hdrs = array(
                          
    'From'    => 'La posta del Somaro<indirizzo@somaro.it>',
                          
    'To'      => $v,
                          
    'Subject' => 'Ip cambiato'
                          
    );
            
    //Con il metodo setHTMLBody carico nell'oggetto
            //il corpo HTML del messaggio, con setTXTBody il
            //corpo solo testo, in questo modo se il destinatario
            //non ha la possibilità di vedere messaggi in HTML
            //vedrà il solo testo
            
    $mail_mime->setHTMLBody($contents);
            
    $mail_mime->setTXTBody($contents2);
            
    //Grazie a mail_mime posso anche caricare allegati ed
            //immagini che fanno parte del corpo del messaggio
            //HTML, per le immagini del corpo uso addHTMLImage.
            //Per essere visualizzate all'interno del messaggio
            //l'src dell'immagine deve essere src="nomeimmagina.estensione"
            
    $mail_mime->addHTMLImage($root."somarello-sx.jpg","image/jpeg","somarello-sx.jpg",true);
            
    $mail_mime->addHTMLImage($root."somarello-up.jpg","image/jpeg","somarello-up.jpg",true);
            
    $mail_mime->addHTMLImage($root."somarello-dw.jpg","image/jpeg","somarello-dw.jpg",true);
            
    $mail_mime->addHTMLImage($root."somarello-dx.jpg","image/jpeg","somarello-dx.jpg",true);
            
            
    //una volta caricati tutti i dati in mail_mime utilizzo
            //il metodo get() che mi restituisce un body del messaggio
            //formattato in maniera impeccabile pronto per essere spedito
            //con mail, poi con headers() ottengo un header formattato
            //anch'esso e pronto per mail
            
    $body $mail_mime->get();
            
    $hdrs $mail_mime->headers($hdrs);
            
            
    //Ora spedisco il tutto con il metodo send di Mail
            
    $mail_object->send($v,$hdrs,$body);
        }
        echo(
    "Inviata e-mail.\n");
    }
    ?>
    Spero ti sia d'aiuto

  3. #3
    Utente di HTML.it L'avatar di gasmor
    Registrato dal
    Apr 2004
    Messaggi
    1,768
    grazie per la risposta debiru,

    ma questi file dove li trovo?

    require_once("Mail.php");
    require_once("Mail/mime.php");

    inoltre, il server smtp non è il provider con cui si è connessi?
    In questo caso non funzionerebbe nel sito perchè devo inoltrare notifiche agli utenti mentre navigano ed ognuno di essi avrà un proprio server smtp diverso in base alla connessione adsl che usa. O sbaglio? :master:
    Hai provato a creare un sito con Jaaxo Cms PHP5? new!

  4. #4
    I file li trovi su http://pear.php.net/

    Allora, per prima cosa devi sapere se puoi mettere mano al server che ospita il tuo script o no.

    Se puoi metterci le mani puoi installare pear con tutti gli annessi e connesi, ma ti consiglio di trovare guide su internet su come fare perché cambia da sistema a sistema, pensa che su Ubuntu pear lo installi dal gestore synaptic e già lì puoi decidere se piazzare diversi oggetti.

    Se non puoi mettere mano al server allora devi cercare di caricare manualmente le cartelle con le classi dei vari oggetti, ma sicuramente sarà una cosa complicata, un pò un parto cesareo.

    Per quanto riguarda l'smtp è il server di posta in uscita, abitualmente è il server di posta in uscita del tuo personale provider.

    Io sono collegato con alice e quindi uso quello di tin (che funziona lo stesso), se il tuo server è connesso su un altro provider devi reperire l'indirizzo smtp.

    Non cambia a seconda del destinatario perché è una cosa che riguarda prettamente il mittente, mentre quello che cambia da destinatario a destinatario è il pop3, cosa che a te non interessa a fatto, sarà il tuo server smtp a sbrigarsela.

    E' la stessa teoria di account multipli sul client di posta, per ogni account devi settare l'smtp del tuo provider (quindi sarà uguale per tutti gli account) ma il pop3 del provider della tua mail.

  5. #5
    Utente di HTML.it L'avatar di dottwatson
    Registrato dal
    Feb 2007
    Messaggi
    3,012
    cioa io uso PHP Mailer

    http://phpmailer.sourceforge.net/

    tuti i miei test li ho fatti su caselle gmail, hotmail, domini di clienti e non ho mai avuto problemi, anche mandando mail in HTML con allegati

    è molto semplice da usare e ampiamente documentata con esempi e documenti al riguardo

    Non sempre essere l'ultimo è un male... almeno non devi guardarti le spalle

    il mio profilo su PHPClasses e il mio blog laboweb

  6. #6
    Utente di HTML.it L'avatar di gasmor
    Registrato dal
    Apr 2004
    Messaggi
    1,768
    @Debiru

    ok, vedo che la cosa è abbastanza complicata però voglio tentare

    con la funzione mail sei mai riuscito ad inviare email no spam a hotmail, yahoo e compagni?
    Hai provato a creare un sito con Jaaxo Cms PHP5? new!

  7. #7
    Utente di HTML.it L'avatar di gasmor
    Registrato dal
    Apr 2004
    Messaggi
    1,768
    Originariamente inviato da dottwatson
    cioa io uso PHP Mailer

    http://phpmailer.sourceforge.net/

    tuti i miei test li ho fatti su caselle gmail, hotmail, domini di clienti e non ho mai avuto problemi, anche mandando mail in HTML con allegati

    è molto semplice da usare e ampiamente documentata con esempi e documenti al riguardo

    ho provato ad usare phpmailer ma ottengo sempre errori. Probabilmente sbaglio nella configurazione.

    Ti posto quello che faccio:

    1) ho eseguito l'upload del phpmailer sul mio host (senza cambiare una virgola ai file)
    quindi ho utilizzato questo esempio:

    Codice PHP:
    require("class.phpmailer.php");

    $mail = new PHPMailer();

    #echo $_SERVER['DOCUMENT_ROOT'];

    $mail->PluginDir "/home/httpd/miosito.it/http/phpmailer/"#da come ho capito si deve aggiungere...


    $mail->IsSMTP(); // telling the class to use SMTP
    $mail->Host "mail.libero.it"// SMTP server, ho provato così ma non so se è giusto
    $mail->From "miamail@miosito.it";
    $mail->AddAddress("indirizzo@hotmail.com");

    $mail->Subject "First PHPMailer Message";
    $mail->Body "Hi! \n\n This is my first e-mail sent through PHPMailer.";
    $mail->WordWrap 50;

    if(!
    $mail->Send())
    {
       echo 
    'Message was not sent.';
       echo 
    'Mailer error: ' $mail->ErrorInfo;
    }
    else
    {
       echo 
    'Message has been sent.';

    ma ottengo questo:

    Message was not sent.Mailer error: The following From address failed: miamail@miosito.it

    Hai provato a creare un sito con Jaaxo Cms PHP5? new!

  8. #8
    Utente di HTML.it L'avatar di dottwatson
    Registrato dal
    Feb 2007
    Messaggi
    3,012
    ho giusto giusto il file di conferma ordine aperto

    ecco come formatto la mail
    Codice PHP:
      $email_comm = new PHPMailer(); // chiamata alla classe
      
    $email_comm->From     "ordini@$site_name"// indirizzo che appare come mittente
      
    $email_comm->FromName $azienda_nome;  // nome del mittente

      
    $email_comm->IsHTML(true); // è una mail con body HTML
      
    $email_comm->Subject  "Conferma di acquisto n.X"// soggetto
      
    $email_comm->Body     $mail_body// corpo del messaggio in HTML
      
    $email_comm->AddAddress($azienda_e_mail);   // il destinatario
      
    $email_comm->AddAttachment($zip_filename);        // AGGIUNGO UN ATTACHMENT
     
      
    if (!$email_comm->Send()) $message "Si è verificato un errore nell' invio della mail di conferma"
      
    $email_comm->ClearAddresses();
      
    $email_comm->ClearBCCs();
      
    $email_comm->ClearAttachments(); 
    questo in una mail semplice invece solo testo

    Codice PHP:
    $email = new PHPMailer();
    $email->From     "register@xxx.com";
    $email->FromName $azienda_nome;
    $email->IsMail();

    $email->Subject  "Conferma Registrazione su [url]www.[/url]$site_name";
    $email->Body     $mail_body;
    $email->AddAddress($mail);

    if(!
    $email->Send()) 
      
    $error_message='<div align="center">
    <table border="0" width="70%" id="table1">
        <tr>
            <td align="center">Si è verificato un errore nell` invio dell` e-mail di 
            registrazione.</td>
        </tr>
        <tr>
            <td align="center">Sarà opportuno comunicare con l` amministratore del 
            sito per continuare con la registrazione.</td>
        </tr>
    </table>
    </div>'

    Non sempre essere l'ultimo è un male... almeno non devi guardarti le spalle

    il mio profilo su PHPClasses e il mio blog laboweb

  9. #9
    Molto interessante questo phpmailer, Mail e Mail_mime funzionano a dovere ma sono un pò macchinosi e richiedono di avere una certa libertà di azione sul server.

    Mo quando ho tempo me lo studio, tnx!

  10. #10
    Utente di HTML.it L'avatar di gasmor
    Registrato dal
    Apr 2004
    Messaggi
    1,768
    Codice PHP:
    require("class.phpmailer.php");

    $email = new PHPMailer();

    #echo $_SERVER['DOCUMENT_ROOT'];

    $email->PluginDir "/home/httpd/miosito.it/http/phpmailer/";

    $mail_body 'Questa email è una nuova prova dalla pagina example.php speriamo che vada bene e che venga presa';

    $email->From     "miamail@miosito.it";
    $email->FromName 'mio nome';
    $email->IsMail();

    $email->Subject  "Conferma Registrazione su ";
    $email->Body     $mail_body;
    $email->AddAddress("indirizzo@hotmail.com");

    if(!
    $email->Send())
      echo 
    'messaggio non inviato';
    else
      echo 
    'messaggio inviato correttamente'

    mi dice che l'email è stata inviata invece su hotmail non mi è arrivato niente.

    ma devo configurare qualcosa sul phpmailer?

    Questa riga che ho inserito io (come scritto nella pagina di installazione):
    $email->PluginDir = "/home/httpd/miosito.it/http/phpmailer/";

    è corretta? Cioè tu l'hai inserita? Hai fatto diversamente?
    Hai provato a creare un sito con Jaaxo Cms PHP5? new!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.