Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2007
    Messaggi
    183

    localhost -> php -> email -> upload -> tmp_name -> path

    Prima di tutto mi scuso per il titolo del post che è poco chiaro.
    Inoltre devo fare ancora una premessa prima di esporre le mie domande.

    Si stratta di DUE problemi correlati di cui sono già presenti on-line moltissimi post su diversi forum.
    In nessuno di loro è però possibile trovare una risposta definitiva ed "elegante".
    La ragione credo sia nel fatto che pochi lettori hanno compreso l'utilità di certe domande di cui è possibile trovare soluzioni "alternative".
    Di TUTTE le domande sotto riportate non ho trovato risposte e ho dovuto rimediare con delle alternative.
    Attendo eventuali nuove risposte e vostri commenti....

    Partiamo dall'inizio:

    1)

    ** problema **
    Si vuole inviare e-mail da pagine php in LOCALE (localhost) MA i server di posta smtp richiedono l'autenticazione.

    ** DOMANDA **
    E' possibile specificare utente e password in modo che la funzione mail() sia in grado si funzionare in locale?

    ** alternativa **
    In passato si consigliava di utilizzare il server di posta di libero.it ma oggi anche questo server richiede l'autenticazione.
    Ad oggi non conosco server che possano essere utilizzati in alternativa.
    Dopo varie ricerche su internet come soluzione ho trovato lo script PHPMailer.
    http://<br /> <a href="http://phpma...om/</a> <br />
    Con questo script è possibile impostare utente e password e lavorare anche dal locale.
    Ecco un estratto del codice che utilizza PHPMailer :
    codice:
    ...
    require("class.phpmailer.php");
    $mail = new PHPMailer();
    $mail->IsSMTP();                        // set mailer to use SMTP
    $mail->Host = "smtp.xxxx.it";  		// specify main and backup server
    $mail->SMTPAuth = true;     		// turn on SMTP authentication
    $mail->Username = "nome@xxxx.it";  	// SMTP username
    $mail->Password = "pass********"; 
    ...
    ...
    $mail->Send()
    ...
    ...

    2)

    ** problema **
    Ora sempre in locale e sempre con PHPMailer si vuole anche allegare un file alla nostra e-mail.
    con PHPMailer basta semplicemente specificare il file da allegare come segue:

    codice:
    $file_da_allegare = "cartella/".$file_name;
    $mail->AddAttachment($file_da_allegare);
    Sembra tutto semplice ma ecco la domanda:

    ** DOMANDA **
    Nel caso di un classico form html con <input type="file" name="allegato"> come faccio a specificare il path completo del file come dall'esempio sopra?

    ** alternativa **

    codice:
    ...
    $attach = $_FILES["allegato"]["tmp_name"];
    Mkdir(temp);						// creo cartella provvisoria
    move_uploaded_file($attach, "temp/".$file_name);	// muovo il file caricato nella cartella creata
    $allego = "temp/".$file_name;
    $mail->AddAttachment($allego);  
    ...
    $mail->Send()						// invio email con allegato grazie a PHPMailer
    ...
    unlink("temp/".$file_name);				// cancello file provvisorio
    Rmdir('temp');						// cancello cartella provvisoria
    ...
    Come potete vedere tutti i problemi sono stati risolti ma non sono soddisfatto dei metodi utilizzati.
    SOPRATTUTTO per la seconda domanda mi continuo a domandare se non ci sia un metodo più semplice per determinare un SEMPLICE PATH.

    Grazie a tutti anticipatamente

  2. #2
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    Non ho sottomano dei test e vado "a memoria", quindi le cose sono da verificare...

    ...per l'ultima questione... hai provato con realpath?

    ...per mail ed smtp authentication... mi sembra che in alcune versioni di PHP si possono impostare dei parametri in php.ini (sezione "[mail function]" o qualcosa del genere, mi pare)

  3. #3
    io non capisco il senso delle domande....

    1) sia in localhost che su "server", se c'è mail allora i parametri si settano normalmente, basta avere un server smtp a cui fare la richiesta...quindi non ti capisco... ovviamente il server smtp deve essere "settato" da accettare connessioni da determinate subnet... ad esempio, alcuni host ti permettono di usare solo il loro smtp e solo dalle loro subnet, quindi dall'esterno non funzionano...al contrario,ad esempio, se tu hai un account google, l'smtp lo usi da dove ti pare... addirittura mi pare che google dava un servizio di invio mail dedicato, non ricordo però i dettagli perchè ne ho sentito solo parlare

    quindi, non capisco il senso della tua domanda

    2) ancora una domanda poco chiara...

    se il file passa da un form html, non puoi specificare nel form html la path del file locale ma lo deve fare l'utente...se lo script è in locale, allora puoi specificare NEL PHP la path del file (ovviamente il file deve essere accedibile dall'utente con cui apache sta girando, altrimenti non funge) e quindi fare l'attachment


    quindi?
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  4. #4
    Utente di HTML.it
    Registrato dal
    Oct 2007
    Messaggi
    183
    Santino grazie per il tuo tempo..

    1) Se avrai ancora tempo prova ad inviare una mail da un form in localhost.
    Hai detto che intendi utilizzare il server di posta di google.
    Credo che non riuscirai ad inviarlo.... ti sfido :-)
    In caso di riuscita di chiedo gentilmente di postarmi il tuo codice e le impostazioni [mail] del tuo file php.ini
    Grazie

    2) Per il secondo punto hai PIENAMENTE RAGIONE.
    Io continuavo a pensare "in locale" ai files presenti nel mio pc.
    In effetti non ha senso chiedere il path di origine del file inviato da un qualsiasi utente della rete.
    Quindi in altre parole significa che il metedo che ho utilizzato io è FORMALMENTE corretto??

  5. #5
    1)

    Guarda... hai miseramente perso... 5 minuti del mio tempo:

    - ho scaricato php mailer
    - ho decompresso il file
    - sono andato negli examples
    - ho modificato il file test_smtp_gmail_basic.php mettendoci i miei dati gmail e l'email del destinatario (hotmail)
    - ho richiamato lo script
    - email inviata con successo
    - ho aperto hotmail: email arrivata con successo, con tanto di file allegati

    quindi? che ho vinto? Tiè, ti posto pure il codice utilizzato:

    Codice PHP:
    <html>
    <head>
    <title>PHPMailer - SMTP (Gmail) basic test</title>
    </head>
    <body>

    <?php

    //error_reporting(E_ALL);
    error_reporting(E_STRICT);

    date_default_timezone_set('Europe/Rome');

    require_once(
    'class.phpmailer.php');
    //include("class.smtp.php"); // optional, gets called from within class.phpmailer.php if not already loaded

    $mail             = new PHPMailer();

    $body             file_get_contents('contents.html');
    $body             eregi_replace("[\]",'',$body);

    $mail->IsSMTP(); // telling the class to use SMTP

    $mail->SMTPDebug  1;                     // enables SMTP debug information (for testing)
                                               // 1 = errors and messages
                                               // 2 = messages only
    $mail->SMTPAuth   true;                  // enable SMTP authentication
    $mail->SMTPSecure "ssl";                 // sets the prefix to the servier
    $mail->Host       "smtp.gmail.com";      // sets GMAIL as the SMTP server
    $mail->Port       465;                   // set the SMTP port for the GMAIL server
    $mail->Username   "YYYYYYYY@gmail.com";  // GMAIL username
    $mail->Password   "ZZZZZZZ";            // GMAIL password

    $mail->SetFrom('YYYYYYY@gmail.com''Giorgio Santini');

    $mail->AddReplyTo("XXXXXX@gmail.com","Giorgio Santini");

    $mail->Subject    "PHPMailer Test Subject via smtp (Gmail), basic";

    $mail->AltBody    "To view the message, please use an HTML compatible email viewer!"// optional, comment out and test

    $mail->MsgHTML($body);

    $address "XXXXXXXX@hotmail.com";
    $mail->AddAddress($address"Giorgio Maria Santini");

    $mail->AddAttachment("images/phpmailer.gif");      // attachment
    $mail->AddAttachment("images/phpmailer_mini.gif"); // attachment

    if(!$mail->Send()) {
      echo 
    "Mailer Error: " $mail->ErrorInfo;
    } else {
      echo 
    "Message sent!";
    }

    ?>

    </body>
    </html>
    che, come puoi vedere, è pari pari il file esempio di phpmailer....


    2) non ho capito un cavolo di quello che hai detto


    EDIT: era la prima volta in vita mia che usavo questa classe
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  6. #6
    Utente di HTML.it
    Registrato dal
    Oct 2007
    Messaggi
    183
    Santino,
    mi dispiace MA continui a non capire la mia domanda....
    allora proverò a spiegarlo con altri termini:
    1)
    E' possibile inviare e-mail in locale usando la funzione mail() SENZA usare PhpMailer ?
    Visto che tu hai utilizzato PhpMailer non hai capito la mia domanda.

    Nel mio primo messaggio volevo dire che l'UNICO modo per mandare e-mail dal locale sembra essere usare PhpMaile .... come in effetti hai fatto tu.

    ALLORA riformulo la domanda: Sei in grado di mandare e-mail dal locale SENZA usare PhpMailer?

    2)
    Indipendentemente dal primo punto ora supponiamo di inviare una e-mail dal locale CON PhpMailer (come hai fatto tu).
    Ora prova ad allegare un file. Ti prego di perdere ancora 2 minuti e prova ad allegare un file e credo che capirai la mia domanda.
    Come fai a specificare a PhpMailer il PATH di un file di cui si fa l'upload da un form file.

    Grazie

  7. #7
    1) ok ho capito meglio la tua domanda

    allora, mail utilizza le impostazioni di sendmail. Quindi se vuoi inviare una mail con MAIL devi configurare sendmail se vuoi usare un smtp particolare.. e ti assicuro che è una cavolata in giro trovi anche gli esempi tarati, ad esempio, su gmail. Se giri su windows non ho idea perchè in teoria non c'è neanche sendmail mi pare, ho visto gente parlare di un sendmail fake per windows, boh... se usi php usa linux e stai tranquillo

    se non vuoi usare sendmail, fà come fanno in phpmailer, apri il socket e implementi il protocollo smtp per parlare con l'smtp server. Anche lì non è una cosa complicatissima da fare, ma se qualcuno già l'ha fatta perchè mi devo rompere io a farla? quindi usa phpmailer e stai a posto (se vuoi vedere come si fa, apriti class.smtp.php del pacchetto phpmailer e guarda)

    2)

    ma se ti ho detto che ho inviato anche gli allegati per email:

    Codice PHP:
    $mail->AddAttachment("images/phpmailer.gif");      // attachment 
    $mail->AddAttachment("images/phpmailer_mini.gif"); // attachment 
    come vedi in addAttachment c'è il path (assoluto/relativo) al file che voglio allegare, quindi?


    ma poi, tutto sto casino e la domanda: ma quale sarebbe il problema che ti affligge con phpmailer tanto da "sfidare" il prossimo ad usare mail? usa phpmailer, modificati un esempietto e vivi felice.


    Scusa per il tono, ma sarà che mi sfugge qualcosa nelle domande che fai
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  8. #8
    Utente di HTML.it
    Registrato dal
    Oct 2007
    Messaggi
    183
    Santino, grazie mille.
    Per il punto uno è tutto chiaro. Userò PhpMailer() senza preoccuparti per altro.

    Rimane però il punto DUE.
    Santino, tu sei molto preaparato, disponibile e simpatico e per questo ti ringrazio molto, PERO' continui a rispondere senza leggere e capire le mie domande:

    il mio problema 2 nasce dall'invio di un allegato partendo da un form html :

    <td>Allegato:</td><td><input type="file" name="allegato" size="40"></td>

    il punto è che a PhpMailer si deve specificare il path del file da allegare.
    io mi chiedo come si deve specificare il path del file sopra allegato e chiamato name="allegato" nella pagina d'invio.

    Santino: se RILEGGERAI il mio PRIMO post, troverai riportato il codice da me utilizzato per risolvere questa cosa.
    Nella domanda chiedo se conoscete un modo più elegante per specificare questo PATH.
    Grazie ancora... sono ormai in debito con te di vari caffè!

  9. #9
    scusa non avevo letto bene è che sono un pò stanco in questo periodo...cmq

    per allegare un file alla mail, il file ce lo devi avere a disposizione. Bene. Ora non conoscendo la classe phpmailer non so dirti se accetta un file binario nell'addattachment+mime type o se puoi solo passare una path. Mi spiego: all'upload tu carichi un file che php si salva in una cartella dandogli un nome tutto suo, giusto? Le cose sono queste:

    1) provi ad allegare direttamente il file temporaneo e ti risparmi il move_uploaded

    2) fai come fai ora, ovvero ti sposti il file nella cartella che ti pare lo alleghi e poi lo cancelli

    3) sostanzialmente uguale al punto 1: se esiste il metodo, leggi il contenuto del file e lo alleghi alla mail specificando il mime (questo nel caso che per qualche motivo non ti allegasse direttamente il file e che phpmailer abbia il metodo apposito, vedi sulla documentazione)
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  10. #10
    Utente di HTML.it
    Registrato dal
    Oct 2007
    Messaggi
    183
    grazieeeee
    buona giornata

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.