Torna indietro   AlterVista | Spazio web gratis, hosting free php mysql > L'angolo del webmaster > PHP, MySql e Apache (.htaccess)

Rispondi
 
LinkBack Strumenti discussione Modalità visualizzazione
  #1 (permalink)  
Vecchio 24-05-2009, 10.39.38
Neofita
 
Data registrazione: 24-05-2009
Messaggi: 7
Predefinito Invio Mail con allegato

Salve a tutti ragazzi!
sono nuovo qui, ho creato un mio spazietto poco fa per testare degli script in php..
Premetto che ho iniziato da poco a studiarlo, e.. diciamo che mi sto smarrendo!

Devo provare uno script che ho trovato in giro per l'invio di una mail con allegato.. ma non so da dove iniziare!!

qualche anima pia che possa darmi una mano??
Rispondi citando
  #2 (permalink)  
Vecchio 24-05-2009, 11.29.42
Guest
 
Messaggi: n/a
Predefinito

Citazione:
Originalmente inviato da provascript Visualizza messaggio
Salve a tutti ragazzi!
sono nuovo qui, ho creato un mio spazietto poco fa per testare degli script in php..
Premetto che ho iniziato da poco a studiarlo, e.. diciamo che mi sto smarrendo!

Devo provare uno script che ho trovato in giro per l'invio di una mail con allegato.. ma non so da dove iniziare!!

qualche anima pia che possa darmi una mano??
intanto guarda se neella cartella dello script c'è un fle readme o qualcosa del genere e poi inizia copiando i file nel tuo sito.
se poi magari ci dici anche qual'è lo script...
Rispondi citando
  #3 (permalink)  
Vecchio 24-05-2009, 14.06.17
Neofita
 
Data registrazione: 24-05-2009
Messaggi: 7
Predefinito

Citazione:
Originalmente inviato da cmsmania Visualizza messaggio
intanto guarda se neella cartella dello script c'è un fle readme o qualcosa del genere e poi inizia copiando i file nel tuo sito.
se poi magari ci dici anche qual'è lo script...
Codice PHP:
<?php
// Recuperiamo i valori dal form e aggiungiamo la nostra email dove ricevere il file allegato con la mail

$to "[mio indirizzo]";

$mail $_POST['mail'];

$oggetto $_POST['oggetto'];

$testomessaggio $_POST['testomessaggio'];

// Creiamo le variabili per il file attachment

$attachment $_FILES['attachment']['tmp_name'];

$attachment_type $_FILES['attachment']['type'];

$attachment_name $_FILES['attachment']['name'];

$headers "From: " $to;

// Verifichiamo se è stato eseguito l'upload del file

if (is_uploaded_file($attachment))

{

// usiamo la funzione fopen e fread per aprire e leggere il file e poi chiudiamo con fclose

$file fopen($attachment,'rb');

$data fread($filefilesize($attachment));

fclose($file);

// Codifichiamo il file adattandolo a base64 usando la funzione chunk_split di php

$data chunk_split(base64_encode($data));

/* Creiamo una variabile per un divisore che deve divir

dere la parte testuale del messaggio dal file stesso altrimenti riceverete una serie illeggibili di caratteri

*/

$func_rand md5(time());

$mime_divisor "==Multipart_divisor_x{$func_rand}x";

// Aggiungo le intestazioni necessarie per l’attachment

$headers .= "\nMIME-Version: 1.0\n";

$headers .= "Content-Type: multipart/mixed;\n";

$headers .= " divisor=\"{$mime_divisor}\"";

// Definisco il tipo di messaggio (MIME/multi-part)

$body .= "This is a multi-part message in MIME format.\n\n";

// Mettiamo il separatore

$body .= "–{$mime_divisor}\n";

// Questa è la parte “testuale” del messaggio

$body .= "Content-Type: text/plain; charset=\"iso-8859-1\"\n";

$body .= "Content-Transfer-Encoding: 7bit\n\n";

$body .= "From :" $mail "\n\n";

$body .= $messaggio "\n\n";

// Ancora il separatore alla fine del contenuto testuale della mail

$body .= "–{$mime_divisor}\n";

// Adesso aggiungiamo l’allegato alla mail

$body .= "Content-Disposition: attachment;\n";

$body .= " filename=\"{$attachment_name}\"\n";

$body .= "Content-Transfer-Encoding: base64\n\n";

$body .= $data "\n\n";

// chiudo con il separatore

$body .= "–{$mime_divisor}–\n";

}

else

{

$body $testomessaggio;

}

// Invio la mail

if (mail($to$oggetto$body$headers))

{

echo 
"<em>Mail e allegato inviati correttamenti</em>";

}else{

echo 
"<em>Ci sono problemi, verifica il codice php</em>";

}

?>
Questo è l'ultimo script che ho trovato.. ne ho trovati diversi, ma nessun read me.. giusto qualche spiegazione, che credo d'aver seguito!
Qui per esempio da quel che ho capito va modificato solo l'indirizzo email di destinazione nella variabile $to.. l'ho testato sul sito, la mail la manda, ma niente allegato.. che ci sia un problema di permessi di scrittura dei file temporanei??
Rispondi citando
  #4 (permalink)  
Vecchio 24-05-2009, 14.10.53
Guest
 
Messaggi: n/a
Predefinito

non ti so direperò controlla due cosa:
-l'utilizzo della variabile ftp su altervista non funziona
-la grandezza dell'allegato quant'è?
Rispondi citando
  #5 (permalink)  
Vecchio 24-05-2009, 14.13.10
Neofita
 
Data registrazione: 24-05-2009
Messaggi: 7
Predefinito

Citazione:
Originalmente inviato da cmsmania Visualizza messaggio
non ti so direperò controlla due cosa:
-l'utilizzo della variabile ftp su altervista non funziona
-la grandezza dell'allegato quant'è?
Eh.. ho provato ad allegare un txt di 1 kb! e ho impostato la dimensione massima a 5 mega dalle impostazioni.. per quanto riguarda la variabile di cui parli.. puoi spiegarti meglio per favore? ripeto.. so molto poco :(
Rispondi citando
  #6 (permalink)  
Vecchio 24-05-2009, 14.16.35
Guest
 
Messaggi: n/a
Predefinito

intendo che l'uso della variabile ftp() su altervista è disattivata e quindi se usi quella variabile per caricare file non funziona
Rispondi citando
  #7 (permalink)  
Vecchio 24-05-2009, 14.18.28
Neofita
 
Data registrazione: 24-05-2009
Messaggi: 7
Predefinito

ma non mi pare che sia usata in quel codice che t'ho postato no? tu ne conosci qualcuno che possa fare al caso mio??
Rispondi citando
  #8 (permalink)  
Vecchio 24-05-2009, 14.25.42
Guest
 
Messaggi: n/a
Predefinito

no non ne conosco però prova a guardare qui: http://www.google.it/search?q=email+...ient=firefox-a
Rispondi citando
  #9 (permalink)  
Vecchio 24-05-2009, 14.28.09
Neofita
 
Data registrazione: 24-05-2009
Messaggi: 7
Predefinito

eh.. google è già il mio migliore amico! ne ho provati un paio.. ma nulla.. vorrà dire che cercherò ancora!
grazie mille amico!
Rispondi citando
  #10 (permalink)  
Vecchio 24-05-2009, 15.02.58
Neofita
 
Data registrazione: 01-05-2009
Messaggi: 16
Predefinito

Per prima cosa ti dice che la sezione non è quella giusta.
Come seconda cosa avevo trovato un pacchetto con uno script che funzionava alla perfezione, che faceva al caso tuo, lo cerco poi ti do il link.
Rispondi citando
  #11 (permalink)  
Vecchio 24-05-2009, 15.48.26
Guest
 
Messaggi: n/a
Predefinito

Non ti manda nessun allegato, perchè manca il form!!!
Stiamo facendo una grande confunsione...
Eccoti il form per l'invio dell'email, crea un file invia.php e inserisci questo:
Codice PHP:
<?php
if(isset($_POST["submit"])) { 

// Recuperiamo i valori dal form e aggiungiamo la nostra email dove ricevere il file allegato con la mail

$to "carlogreco93@gmail.com";

$mail $_POST['mail'];

$oggetto $_POST['oggetto'];

$testomessaggio $_POST['testomessaggio'];

// Creiamo le variabili per il file attachment

$attachment $_FILES['attachment']['tmp_name'];

$attachment_type $_FILES['attachment']['type'];

$attachment_name $_FILES['attachment']['name'];

$headers "From: " $to;

// Verifichiamo se è stato eseguito l'upload del file

if (is_uploaded_file($attachment))

{

// usiamo la funzione fopen e fread per aprire e leggere il file e poi chiudiamo con fclose

$file fopen($attachment,'rb');

$data fread($filefilesize($attachment));

fclose($file);

// Codifichiamo il file adattandolo a base64 usando la funzione chunk_split di php

$data chunk_split(base64_encode($data));

/* Creiamo una variabile per un divisore che deve divir

dere la parte testuale del messaggio dal file stesso altrimenti riceverete una serie illeggibili di caratteri

*/

$func_rand md5(time());

$mime_divisor "==Multipart_divisor_x{$func_rand}x";

// Aggiungo le intestazioni necessarie per l’attachment

$headers .= "\nMIME-Version: 1.0\n";

$headers .= "Content-Type: multipart/mixed;\n";

$headers .= " divisor=\"{$mime_divisor}\"";

// Definisco il tipo di messaggio (MIME/multi-part)

$body .= "This is a multi-part message in MIME format.\n\n";

// Mettiamo il separatore

$body .= "–{$mime_divisor}\n";

// Questa è la parte “testuale” del messaggio

$body .= "Content-Type: text/plain; charset=\"iso-8859-1\"\n";

$body .= "Content-Transfer-Encoding: 7bit\n\n";

$body .= "From :" $mail "\n\n";

$body .= $messaggio "\n\n";

// Ancora il separatore alla fine del contenuto testuale della mail

$body .= "–{$mime_divisor}\n";

// Adesso aggiungiamo l’allegato alla mail

$body .= "Content-Disposition: attachment;\n";

$body .= " filename=\"{$attachment_name}\"\n";

$body .= "Content-Transfer-Encoding: base64\n\n";

$body .= $data "\n\n";

// chiudo con il separatore

$body .= "–{$mime_divisor}–\n";

}

else

{

$body $testomessaggio;

}

// Invio la mail

if (mail($to$oggetto$body$headers))

{

echo 
"<em>Mail e allegato inviati correttamenti</em>";

}else{

echo 
"<em>Ci sono problemi, verifica il codice php</em>";

}

}
?>
<form action="" method="post" enctype="multipart/form-data">
<table>
<tr>
<td>Email destinatario:</td><td><input type="text" name="mail" /></td>
</tr>
<tr>
<td>Oggetto email:</td><td><input type="text" name="oggetto" /></td>
</tr>
<tr>
<td>Testo messaggio:</td><td><input type="text" name="testomessaggio" /></td>
</tr>
<tr>
<td>Allega File:</td><td><input type="file" name="attachment" /></tr>
</tr>
<tr>
<td><input type="submit" name="submit" value="Invia email + Allegato" /></td>
</tr>
</table>
</form>
P.S. Il file non verrà mai allegato, perchè fopen() è limitata ad aprire file interni al server... Quindi devi utilizzare le cURL
Rispondi citando
  #12 (permalink)  
Vecchio 26-05-2009, 09.41.36
Neofita
 
Data registrazione: 24-05-2009
Messaggi: 7
Predefinito

Citazione:
Originalmente inviato da nokiagames Visualizza messaggio
Non ti manda nessun allegato, perchè manca il form!!!
Stiamo facendo una grande confunsione...
Eccoti il form per l'invio dell'email, crea un file invia.php e inserisci questo:
Codice PHP:
<?php
if(isset($_POST["submit"])) { 

// Recuperiamo i valori dal form e aggiungiamo la nostra email dove ricevere il file allegato con la mail

$to "carlogreco93@gmail.com";

$mail $_POST['mail'];

$oggetto $_POST['oggetto'];

$testomessaggio $_POST['testomessaggio'];

// Creiamo le variabili per il file attachment

$attachment $_FILES['attachment']['tmp_name'];

$attachment_type $_FILES['attachment']['type'];

$attachment_name $_FILES['attachment']['name'];

$headers "From: " $to;

// Verifichiamo se è stato eseguito l'upload del file

if (is_uploaded_file($attachment))

{

// usiamo la funzione fopen e fread per aprire e leggere il file e poi chiudiamo con fclose

$file fopen($attachment,'rb');

$data fread($filefilesize($attachment));

fclose($file);

// Codifichiamo il file adattandolo a base64 usando la funzione chunk_split di php

$data chunk_split(base64_encode($data));

/* Creiamo una variabile per un divisore che deve divir

dere la parte testuale del messaggio dal file stesso altrimenti riceverete una serie illeggibili di caratteri

*/

$func_rand md5(time());

$mime_divisor "==Multipart_divisor_x{$func_rand}x";

// Aggiungo le intestazioni necessarie per l’attachment

$headers .= "\nMIME-Version: 1.0\n";

$headers .= "Content-Type: multipart/mixed;\n";

$headers .= " divisor=\"{$mime_divisor}\"";

// Definisco il tipo di messaggio (MIME/multi-part)

$body .= "This is a multi-part message in MIME format.\n\n";

// Mettiamo il separatore

$body .= "–{$mime_divisor}\n";

// Questa è la parte “testuale” del messaggio

$body .= "Content-Type: text/plain; charset=\"iso-8859-1\"\n";

$body .= "Content-Transfer-Encoding: 7bit\n\n";

$body .= "From :" $mail "\n\n";

$body .= $messaggio "\n\n";

// Ancora il separatore alla fine del contenuto testuale della mail

$body .= "–{$mime_divisor}\n";

// Adesso aggiungiamo l’allegato alla mail

$body .= "Content-Disposition: attachment;\n";

$body .= " filename=\"{$attachment_name}\"\n";

$body .= "Content-Transfer-Encoding: base64\n\n";

$body .= $data "\n\n";

// chiudo con il separatore

$body .= "–{$mime_divisor}–\n";

}

else

{

$body $testomessaggio;

}

// Invio la mail

if (mail($to$oggetto$body$headers))

{

echo 
"<em>Mail e allegato inviati correttamenti</em>";

}else{

echo 
"<em>Ci sono problemi, verifica il codice php</em>";

}

}
?>
<form action="" method="post" enctype="multipart/form-data">
<table>
<tr>
<td>Email destinatario:</td><td><input type="text" name="mail" /></td>
</tr>
<tr>
<td>Oggetto email:</td><td><input type="text" name="oggetto" /></td>
</tr>
<tr>
<td>Testo messaggio:</td><td><input type="text" name="testomessaggio" /></td>
</tr>
<tr>
<td>Allega File:</td><td><input type="file" name="attachment" /></tr>
</tr>
<tr>
<td><input type="submit" name="submit" value="Invia email + Allegato" /></td>
</tr>
</table>
</form>
P.S. Il file non verrà mai allegato, perchè fopen() è limitata ad aprire file interni al server... Quindi devi utilizzare le cURL
No aspetta, il form l'ho fatto ovvio, l'ho messo in una pagina html a parte.. però non andava comunque!
Fammi capire una cosa.. con questo codice va o no? che url devo usare?

Ps. Grazie mille a tutti ragazzi..
Rispondi citando
  #13 (permalink)  
Vecchio 26-05-2009, 11.01.09
Guest
 
Messaggi: n/a
Predefinito

Citazione:
Originalmente inviato da provascript Visualizza messaggio
No aspetta, il form l'ho fatto ovvio, l'ho messo in una pagina html a parte.. però non andava comunque!
Fammi capire una cosa.. con questo codice va o no? che url devo usare?

Ps. Grazie mille a tutti ragazzi..
devi usare la funzione cURL() al posto di fopen()
Rispondi citando
  #14 (permalink)  
Vecchio 26-05-2009, 12.30.39
Neofita
 
Data registrazione: 24-05-2009
Messaggi: 7
Predefinito

Fatal error: Call to undefined function cURL() in /membri/provascript/php5/invia.php on line 32...
ho sostituito fopen con cURL.. ma nada..

scusate il mio essere capra!

EDIT: ragaaa ho trovato uno script che pare funzionare!!
ho fatto solo una prova veloce ed è andata.. poi lo studierò bene e vedrò per differenti dimensioni del file.. lo script è qui: http://forum.it.altervista.org/php-m...tml#post572845

grazie ancora a tutti!

Ultima modifica di debug : 26-05-2009 alle ore 13.39.22
Rispondi citando
  #15 (permalink)  
Vecchio 09-12-2011, 17.59.07
Neofita
 
Data registrazione: 23-11-2010
Messaggi: 1
Predefinito Form mail con allegato

Salve a tutti, è evidente che sono nuovo del forum, quindi non so di preciso se se ne è già parlato della

questione che vi sto porgendo, comunque vengo al punto;
Ho un Sito con form mail strutturato per l'invio di email con allegato, con form e relativo php:

questo é il form:
Codice HTML:
<form action="form.php" method="POST" enctype="multipart/form-data">
<input type="hidden" name="destinatario" value="info@ilmiosito.it">
<table  style="border:0;color:white;float:left">
<tr>	
  <td>Tua Mail:</td>
  <td><input type="text" name="mittente" value="" style="width: 300px" /><br><br></td>
</tr>
<tr>
  <td>Oggetto:</td>
  <td><input type="text" name="oggetto" value="" style="width: 300px" /><br><br></td>
</tr>
<tr>
  <td>Messaggio:</td>
  <td style="width:300px"><textarea cols="20" rows="4" name="testomessaggio" 

style="width:300px;overflow:hidden;height:130px; max-width:300px;max-height:130px"></textarea><br>
  <br></td>
  </tr>
<tr>
  <td>Allega file:</td>
  <td style="width:305px"><input type="file" name="attachment" style="width:305px;" class="file_1"/><br>
  <br><br></td>
</tr>
<tr>
  <td colspan="2"><input type="image"  value="submit"  src="images/invia2.png" style="float:right" /></td>
</tr>
</table>
</form>


questo è il php:

Codice PHP:
<?php
// Recupero il valore dei campi del form
$destinatario $_POST['destinatario'];
$mittente $_POST['mittente'];
$oggetto $_POST['oggetto'];
$messaggio $_POST['messaggio'];

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

// Creo 2 variabili che riempirò più avanti...
$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($filefilesize($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/plain; charset=\"iso-8859-1\"\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;\n";
  
$msg .= " filename=\"{$allegato_name}\"\n";
  
$msg .= "Content-Transfer-Encoding: base64\n\n";
  
$msg .= $data "\n\n";

  
// chiudo con il separatore
  
$msg .= "--{$mime_boundary}--\n";
}
else
{
  
$msg $messaggio;
}

// Invio la mail
if (mail($destinatario$oggetto$msg$headers))
{
  echo 
"<p>Mail inviata con successo!</p>";
}else{
  echo 
"<p>Errore!</p>";
}
?>
Il punto è che funziona perfettamente, arrivano tutte le parti compreso l'allegato, con il classico "Mail inviata

con successo!" ma il problema è che non da "Errore" se non si compilano i campi, e non si allega nulla;

in poche parole se si clicca su "Invia" senza compilare e allegare nulla, da sempre "Mail inviata con successo!",

e ovviamente non invia nulla.

Se si compilano i campi ma non si allega nulla, da sempre "Mail inviata con successo!" e arriva l'email, con i

campi, ovviamente senza allegato.

Se si compila solo l'Oggetto e il Messaggio, senza compilare il campo "Email", da sempre "Mail inviata con

successo!" e arriva l'email, con il mittente sconosciuto e ovviamente senza allegato.

Quello che vorrei e la pagina "Errore" se non si compilano almeno i campi testuali.

Sicuramente manca qualcosa al php, ma cosa?

Qualcuno saprà aiutarmi?

Un Grazie anticipato è cosa buona e giusta!
Rispondi citando
Rispondi

Strumenti discussione
Modalità visualizzazione

Regole di scrittura
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is Attivato
Le faccine sono Attivato
Il codice [IMG] è Attivato
Il codice HTML è Disattivato
Trackbacks are Attivato
Pingbacks are Attivato
Refbacks are Disattivato



Tutti gli orari sono GMT +1. Adesso sono le 06.57.53.