Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14
  1. #1

    alternativa al "mailto: ..." con body che supera il limite dei caratteri

    Salve ragazzi come da titolo ho un problema con la funzione "mailto".
    Sto creando il mio sito e ho messo a punto un box per farmi mandare una mail dagli utenti interessati direttamente dalla pagina. Il box prende come dati nome, email e il messaggio e poi tramite delle procedure in PHP, al click "invia", mi manda la mail da solo con i suddetti dati e manda una notifica all'utente direttamente sulla pagina.
    Ora finchè il server fa il bravo e manda le mail è tutto ok, se questo però non succedesse e quindi inviare la mail direttamente dal sito risultasse impossibile ho previsto una piccola procedura "di sicurezza", nel senso che la notifica che l'utente riceverà sulla pagina sarà qualcosa tipo "impossibile inviare messaggio. Clicchi qui per inviarlo con il suo client di posta" dove quel "Clicchi qui" è appunto un link con un " href='mailto: mail@mail.it?body='$messaggio' ", in $messaggio ci sarà salvato quindi il testo che l'utente ha scritto.

    Solo ora mi sono accorto che nel caso il messaggio superi un certo limite di caratteri (che da quanto ho capito è 2048 caratteri...? Ma è lo stesso per ogni browser?), l'url risulta troppo lungo e quindi si inceppa non facendo assolutamente nulla.
    Come posso risolvere?
    Esiste un alternativa a mailto? o un altro modo per aprire il client di posta predefinito e compilarlo automaticamente?
    Grazie!

  2. #2

    UP! (alcuni aggiornamenti)

    cercando di risolvere il problema succitato in qualche modo mi era venuto in mente di fare un form "mascherato" per inviare tramite POST i dati al client di posta predefinito. TEORICAMENTE sembrava l'idea perfetta, e così ho scritto questo pezzetto di codice:
    codice:
    <form action='mailto:mia@mail.it?subject=mail da miosito' enctype='text/plain' method='POST'>
          <textarea style='display:none;' name='messaggio'>$messaggio</textarea>
          <input type='submit' value='clicca qui blabla' />
    </form>
    al posto di
    codice:
    <a href="mailto.......">clicca qui blabla</a>
    il chè funziona, ma ho lo stesso problema..mettendo un testo troppo lungo quel bottone rimane inutile, più ci clicco più non succede nulla! (proprio come faceva quando mandavo troppi dati per GET).
    So che anche per il metodo POST ci sono delle limitazioni ma pensavo ci volesse mooooolto di più per superarle!
    Anche perchè il suddetto "$messaggio" che contiene il testo da mandare, io l'ho preso proprio tramite POST!
    Ciò significa che ho sbaiato qualcosa (ancora): aiuto

  3. #3

    UP! (..altre scoperte)

    Salve ragazzi, spero di ricevere qualche vostra risposta a breve perchè ci sto impazzendo

    Pensavo fosse sbagliato il form così oggi ci ho collegato una pagina "prova.php" al posto di "mailto:mia@mail.it" che non fa altro che vedere se c'è qualcosa nel POST e stamparmela a video.

    Con mio stupore funziona, il messaggio anche se chilometrico viene comunque mandato alla pagina prova.php e stampato correttamente quindi non è un problema del form (almeno credo).

    Data la stranezza, la domanda che ora mi sorge è: non è che il "mailto" ha un limite di caratteri a parte solo per se stesso?
    Mi spiego meglio: mi pare che per il metodo POST la limitazione sia 4MB (e a scrivere 4mb di testo ce ne vuole!), ma non è che mailto ha una restrizione diversa? Si può modificare? è una cosa che dipende dal server?
    PS per ora sto testando tutto in locale (con XAMPP), può essere questa una causa del problema?
    help

  4. #4
    Amministratore L'avatar di Vincent.Zeno
    Registrato dal
    May 2003
    residenza
    Emilia-Romagna (tortellini und cappelletti land!)
    Messaggi
    20,783
    Quote Originariamente inviata da VincenzoB92 Visualizza il messaggio
    Esiste un alternativa a mailto?
    coma sai già... lo script lato server.
    se vuoi attuare la tua procedura "di sicurezza" devi stare basso col numero dei caratteri.
    il limite di mailto è perché, anche se tenti di ingannarlo con method=post, di fatto è una querystring

    ti suggerirei comunque di verificare meglio il perché, a volte, non ti funziona lo script sul server

  5. #5
    Quote Originariamente inviata da Vincent.Zeno Visualizza il messaggio
    coma sai già... lo script lato server.
    se vuoi attuare la tua procedura "di sicurezza" devi stare basso col numero dei caratteri.
    il limite di mailto è perché, anche se tenti di ingannarlo con method=post, di fatto è una querystring

    ti suggerirei comunque di verificare meglio il perché, a volte, non ti funziona lo script sul server
    Ciao vincent-zeno e grazie per la risposta! Quindi mi stai dicendo che se lo mando tramite get/post non cambia assolutamente nulla per le limitazioni?
    Comunque non ti so rispondere in quanto i motivi per cui il server possa fare le bizze sono molteplici, in teoria non dovrebbe succedere MAI, ma siccome non ci metterei la mano sul fuoco è meglio partire prevenuti non credi? :P

  6. #6
    Amministratore L'avatar di Vincent.Zeno
    Registrato dal
    May 2003
    residenza
    Emilia-Romagna (tortellini und cappelletti land!)
    Messaggi
    20,783
    in realtà non mandi nulla via get o post, semplicemente sfrutti un'opzione (mailto) che richiama il programma di posta, e che accetta alcune variabili in querystring. tutto qui.

    non ho capito se questi problemi sul server li hai o no.
    se poi vuoi solo tutelare l'utente allora, senza tante complicazioni, metti l'indirizzo di posta a disposizione e bona le.

  7. #7
    Quote Originariamente inviata da Vincent.Zeno Visualizza il messaggio
    in realtà non mandi nulla via get o post, semplicemente sfrutti un'opzione (mailto) che richiama il programma di posta, e che accetta alcune variabili in querystring. tutto qui.

    non ho capito se questi problemi sul server li hai o no.
    se poi vuoi solo tutelare l'utente allora, senza tante complicazioni, metti l'indirizzo di posta a disposizione e bona le.
    Ho capito..ma queste variabili si sa quanto possono essere grandi al massimo precisamente?
    Cioè se so che più di 1500 caratteri (per esempio) non li posso mandare potrei mettere un limite alla textarea almeno l'utente si rende conto, o comunque inventarmi qualche altro stratagemma..
    sai dove posso reperire la documentazione per quanto riguarda la funzione "mailto"?
    ..oppure queste limitazioni vengono "decise" in base al server che utilizzo?
    Grazie e scusa l'insistenza

    ps. comunque il sito è nuovo di zecca, non l'ho ancora piazzato online quindi per ora non ho idea di che razza di problemi possano venire fuori, ne tanto meno se verranno fuori!
    In teoria non dovrei aver mai bisogno di questo procedimento però è sempre bene essere preparati ad ogni evenienza..metti che mi bloccano le mail (esempio stupido) e la mail() di PHP mi restituisce FALSE, devo in qualche modo gestire l'errore per fare meno danni possibili

  8. #8
    Amministratore L'avatar di Vincent.Zeno
    Registrato dal
    May 2003
    residenza
    Emilia-Romagna (tortellini und cappelletti land!)
    Messaggi
    20,783
    la lunghezza massima dei caratteri è definita dal browser in uso e si rifà al numero accettato in querystring.
    solitamente sono 2048 ma è arbitrario.
    attento ai caratteri che cambiano codificandosi, tipo lo spazio che diventa %20: tu scrivi uno spazio ma sono tre caratteri
    direi di tenersi sotto i 2000

    sul server puoi sempre inserire procedure per un rapporto sugli errori

  9. #9
    Quote Originariamente inviata da Vincent.Zeno Visualizza il messaggio
    la lunghezza massima dei caratteri è definita dal browser in uso e si rifà al numero accettato in querystring.
    solitamente sono 2048 ma è arbitrario.
    attento ai caratteri che cambiano codificandosi, tipo lo spazio che diventa %20: tu scrivi uno spazio ma sono tre caratteri
    direi di tenersi sotto i 2000

    sul server puoi sempre inserire procedure per un rapporto sugli errori

    Tutto chiaro, grazie mille per la pazienza!
    Ho un ultima domanda da porti: siccome i dati che recupero hanno come carattere di newline il "\n", che però non è preso minimamente in considerazione in questo caso, per preparare il messaggio e conservare anche gli "invii" dell'utente che lo ha scritto prima di inviarlo faccio un semplicissimo:
    codice:
       $messaggio = str_replace("\n", "%0D%0A", $messaggio);
    convertendoli appunto in "%0D%0A". Facendo delle prove ho scoperto che anche se li converto solo con %0A (senza il %0D davanti) funziona lo stesso, però non so spiegarmi se sia stato un caso fortuito che funziona solo a me (e non sarebbe neanche strano ahah) o se posso fare a meno di quel %0D risparmiando così 3caratteri ogni volta che l'utente preme "invio" .. che dici?

  10. #10

    UP! (scoperta)

    Ho appena scoperto che %0D è il Carriage Return (\r), mentre il %0A è il New Line (\n), a questo punto posso usare anche solo %0A o rischio l'incompatibilità con determinati browser/client/sistemi operativi?

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.