form invio mail con foto o logo

searedone

Utente Attivo
11 Giu 2010
508
0
0
form invio mail con foto o logo
Ciao a tutti,
ho creato un form con relativo cod php , ma non capisco come mai mi invia tutti i dati ma non il file con il solito metodo sfoglia documento ecc ecc .. il file lo mette ma quando invia e ricevo la mail c'è tutto tranne il file in allegato .. vi posto lo script e il form .

chi mi aiuta a capire cosa manca ?!?! ...

Form:

<form action="FormToEmail.php" method="post" enctype="multipart/form-data" name="inviaci_il_tuo_curriculum_di_chirurgia_gratuitamente">
<p>
<label for="Nome"></label>

<label for="Nome">Nome</label>
<input type="text" name="Nome" id="Nome" />
</p>
<p>
<label for="Cognome">Cognome</label>
<input type="text" name="Cognome" id="Cognome" />
</p>
<p>
<label for="Specializzazione">Specializzazione</label>
<input type="text" name="Specializzazione" id="Specializzazione" />
</p>
<p>
<label for="E-mail">E-mail</label>
<input type="text" name="E-mail" id="E-mail" />
</p>
<p>
<label for="Telefono">Telefono</label>
<input type="text" name="Telefono" id="Telefono" />
</p>
<p>
<label for="Sito internet">Sito internet</label>
<input type="text" name="Sito internet" id="Sito internet" />
</p>
<p>
<label for="Citta'">Citta'</label>
<input type="text" name="Citta'" id="Citta'" />
</p>
<p>
<label for="Via">Via</label>
<input type="text" name="Via" id="Via" />
</p>
<p>
<label for="Cap">Cap</label>
<input type="text" name="Cap" id="Cap" />
</p>
<p>
<label for="Descrizione Operazioni">Descrizione OPerazioni</label>
<textarea name="Descrizione Operazioni" id="Descrizione Operazioni" cols="45" rows="5"></textarea>
</p>
<p>
<label for="Curriculum">Curriculum</label>
<textarea name="Curriculum" id="Curriculum" cols="45" rows="5"></textarea>
</p>
<p>
<label for="Visite specialistiche effettuate">Visite specialistiche effettuate</label>
<input type="text" name="Visite specialistiche effettuate" id="Visite specialistiche effettuate" />
</p>
<p>
<label for="Autorizzo i dati per la Privacy">Autorizzo i dati per la Privacy</label>
<select name="Autorizzo i dati per la Privacy" id="Autorizzo i dati per la Privacy">
<option>si</option>
<option>no</option>
</select>
</p>
<h2>Nota: Se non si autorizzano i dati per la privacy non è possibile essere inserite nei portali</h2>
<hr />
<p>
<label for="Autorizzo il ricevimento di news letter">Autorizzo il ricevimento di news letter</label>
<select name="Autorizzo il ricevimento di news letter" id="Autorizzo il ricevimento di news letter">
<option>si</option>
<option>no</option>
</select>
</p>
<p>
<label for="Foto / Logo">Foto / Logo</label>
<input type="file" name="Foto / Logo" id="Foto / Logo" />
</p>
<p>
<input type="hidden" name="hiddenField" id="hiddenField" />
</p>
<p>Invia
<input type="submit" name="Invia" id="Invia" value="Submit" />

</p>
</form>

Pagina php:


<?php

$my_email = "info@miamail.com";

/*

Enter the continue link to offer the user after the form is sent. If you do not change this, your visitor will be given a continue link to your homepage.

If you do change it, remove the "/" symbol below and replace with the name of the page to link to, eg: "mypage.htm" or "http://www.elsewhere.com/page.htm"

*/

$continue = "http://www.miosito.com";

/*

Step 3:

Save this file (FormToEmail.php) and upload it together with your webpage containing the form to your webspace. IMPORTANT - The file name is case sensitive! You must save it exactly as it is named above! Do not put this script in your cgi-bin directory (folder) it may not work from there.

THAT'S IT, FINISHED!

You do not need to make any changes below this line.

*/

$errors = array();

// Remove $_COOKIE elements from $_REQUEST.

if(count($_COOKIE)){foreach(array_keys($_COOKIE) as $value){unset($_REQUEST[$value]);}}

// Check all fields for an email header.

function recursive_array_check_header($element_value)
{

global $set;

if(!is_array($element_value)){if(preg_match("/(%0A|%0D|\n+|\r+)(content-type:|to:|cc:|bcc/i",$element_value)){$set = 1;}}
else
{

foreach($element_value as $value){if($set){break;} recursive_array_check_header($value);}

}

}

recursive_array_check_header($_REQUEST);

if($set){$errors[] = "You cannot send an email header";}

unset($set);

// Validate email field.

if(isset($_REQUEST['email']) && !empty($_REQUEST['email']))
{

if(preg_match("/(%0A|%0D|\n+|\r+|/i",$_REQUEST['email'])){$errors[] = "Email address may not contain a new line or a colon";}

$_REQUEST['email'] = trim($_REQUEST['email']);

if(substr_count($_REQUEST['email'],"@") != 1 || stristr($_REQUEST['email']," ")){$errors[] = "Email address is invalid";}else{$exploded_email = explode("@",$_REQUEST['email']);if(empty($exploded_email[0]) || strlen($exploded_email[0]) > 64 || empty($exploded_email[1])){$errors[] = "Email address is invalid";}else{if(substr_count($exploded_email[1],".") == 0){$errors[] = "Email address is invalid";}else{$exploded_domain = explode(".",$exploded_email[1]);if(in_array("",$exploded_domain)){$errors[] = "Email address is invalid";}else{foreach($exploded_domain as $value){if(strlen($value) > 63 || !preg_match('/^[a-z0-9-]+$/i',$value)){$errors[] = "Email address is invalid"; break;}}}}}}

}

// Check referrer is from same site.

if(!(isset($_SERVER['HTTP_REFERER']) && !empty($_SERVER['HTTP_REFERER']) && stristr($_SERVER['HTTP_REFERER'],$_SERVER['HTTP_HOST']))){$errors[] = "You must enable referrer logging to use the form";}

// Check for a blank form.

function recursive_array_check_blank($element_value)
{

global $set;

if(!is_array($element_value)){if(!empty($element_value)){$set = 1;}}
else
{

foreach($element_value as $value){if($set){break;} recursive_array_check_blank($value);}

}

}

recursive_array_check_blank($_REQUEST);

if(!$set){$errors[] = "You cannot send a blank form";}

unset($set);

// Display any errors and exit if errors exist.

if(count($errors)){foreach($errors as $value){print "$value<br>";} exit;}

if(!defined("PHP_EOL")){define("PHP_EOL", strtoupper(substr(PHP_OS,0,3) == "WIN") ? "\r\n" : "\n");}

// Build message.

function build_message($request_input){if(!isset($message_output)){$message_output ="";}if(!is_array($request_input)){$message_output = $request_input;}else{foreach($request_input as $key => $value){if(!empty($value)){if(!is_numeric($key)){$message_output .= str_replace("_"," ",ucfirst($key)).": ".build_message($value).PHP_EOL.PHP_EOL;}else{$message_output .= build_message($value).", ";}}}}return rtrim($message_output,", ");}

$message = build_message($_REQUEST);

$message = $message . PHP_EOL.PHP_EOL."-- ".PHP_EOL."";

$message = stripslashes($message);

$subject = "FormToEmail Comments";

$headers = "From: " . $_REQUEST['email'];

mail($my_email,$subject,$message,$headers);

?>


Qualcuno mi sa dire cosa manca per allegare anche file e o foto !??!?!?

grazie mille
 
nessuno riesce a capire che devo aggiungere ..

Please nessuno riesce a capire che cosa devo aggiungere per allegare il file ...

le sto provando tutte ma non riesco a capire ... c'è qualche genio di php che puo' aiutarmi ad aggiungere questa benedetta stringa che mi allega il file ..... :)


Grazie a tutti
 
!?!? ho guardato letto e scaricato anche il file

!?!? ho guardato letto e scaricato anche il file , ma dopo varie prove e risprove mi sa che non funziona ...

e anche scrivendo quello che c'è sullla pagina di atterraggio che mi hai dato , non funziona...

Mi sapresti dare un'altra dritta dato che mi hanno detto che sei un drago in php !?!?


Grazie in anticipo
 
ciao
per inviare allegati la cosa migliore e piu comoda è usare la classe maillephp.
non mi ricordo mai il link qui su mrwm anche se ormai credo che sia l'ennesima volta che la consiglio.


p.s.
qui devo dare ragione a alex usate i tag per formattera i codici
 
Gia' scaricato .. Ma impossibile da capire come funziona ...

Ma e' possibile che nn si possa aggiungere solo qualche riga di codice a quello che ho postato !?
$

Oppure qualcuno sa anche solo uno script tipo il mio che esegua solo l'invio di file al mio indirizzo email, nel caso potrei prima far inviare il form di testo e in un secondo momento
Il file ...

Spero che qualche genio di php possa aiutarmi .. Help
 
ciao
guarda al link
http://it.php.net/manual/en/function.mail.php
poi scorri sugli esempi sino a quello akam 28-May-2008 01:55
poi come ho già detto fai prima con la classe (che è anche più sicura).
scusa: non avevo letto: hai scaricato la classe e non hai capito come funzia? se è così (abbi un po' di pazienza) o io o eliox (vedi articolo) ti diamo le indicazioni
 
Ultima modifica:
togo ... magari poteste spiegarmi .. sarebbe davvero un piacere...

In ogni caso questo è lo script che mi hai detto di akam... ma ad esempio dove devo metterla ui la mia mail ??!?!?


Anche perchè suppongo che devo creare il solito form , in action mettere il file php e lui invia quando processa, ma non penso che funzioni senza settare la mail ...

help se potete ..

PHP:
<?php
$to      = $_POST['to']; 
$email   = $_POST['email']; 
$name    = $_POST['name'];
$subject = $_POST['subject']; 
$comment = $_POST['message'];

$To          = strip_tags($to);
$TextMessage =strip_tags(nl2br($comment),"<br>");
$HTMLMessage =nl2br($comment);
$FromName    =strip_tags($name);
$FromEmail   =strip_tags($email);
$Subject     =strip_tags($subject);

$boundary1   =rand(0,9)."-"
.rand(10000000000,9999999999)."-"
.rand(10000000000,9999999999)."=:"
.rand(10000,99999);
$boundary2   =rand(0,9)."-".rand(10000000000,9999999999)."-"
.rand(10000000000,9999999999)."=:"
.rand(10000,99999);

 
for($i=0; $i < count($_FILES['youfile']['name']); $i++){
if(is_uploaded_file($_FILES['fileatt']['tmp_name'][$i]) && 
   !empty($_FILES['fileatt']['size'][$i]) && 
   !empty($_FILES['fileatt']['name'][$i])){
     
$attach      ='yes';
$end         ='';

   $handle      =fopen($_FILES['fileatt']['tmp_name'][$i], 'rb'); 
   $f_contents  =fread($handle, $_FILES['fileatt']['size'][$i]); 
   $attachment[]=chunk_split(base64_encode($f_contents));
   fclose($handle); 

$ftype[]       =$_FILES['fileatt']['type'][$i];
$fname[]       =$_FILES['fileatt']['name'][$i];
}
}

/***************************************************************
 Creating Email: Headers, BODY
 1- HTML Email WIthout Attachment!! <<-------- H T M L ---------
 ***************************************************************/
#---->Headers Part
$Headers     =<<<AKAM
From: $FromName <$FromEmail>
Reply-To: $FromEmail
MIME-Version: 1.0
Content-Type: multipart/alternative;
    boundary="$boundary1"
AKAM;

#---->BODY Part
$Body        =<<<AKAM
MIME-Version: 1.0
Content-Type: multipart/alternative;
    boundary="$boundary1"

This is a multi-part message in MIME format.

--$boundary1
Content-Type: text/plain;
    charset="windows-1256"
Content-Transfer-Encoding: quoted-printable

$TextMessage
--$boundary1
Content-Type: text/html;
    charset="windows-1256"
Content-Transfer-Encoding: quoted-printable

$HTMLMessage

--$boundary1--
AKAM;

/***************************************************************
 2- HTML Email WIth Multiple Attachment <<----- Attachment ------
 ***************************************************************/
 
if($attach=='yes') {

$attachments='';
$Headers     =<<<AKAM
From: $FromName <$FromEmail>
Reply-To: $FromEmail
MIME-Version: 1.0
Content-Type: multipart/mixed;
    boundary="$boundary1"
AKAM;

for($j=0;$j<count($ftype); $j++){
$attachments.=<<<ATTA
--$boundary1
Content-Type: $ftype[$j];
    name="$fname[$i]"
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
    filename="$fname[$j]"

$attachment[$j]

ATTA;
}

$Body        =<<<AKAM
This is a multi-part message in MIME format.

--$boundary1
Content-Type: multipart/alternative;
    boundary="$boundary2"

--$boundary2
Content-Type: text/plain;
    charset="windows-1256"
Content-Transfer-Encoding: quoted-printable

$TextMessage
--$boundary2
Content-Type: text/html;
    charset="windows-1256"
Content-Transfer-Encoding: quoted-printable

$HTMLMessage

--$boundary2--

$attachments
--$boundary1--
AKAM;
}

/***************************************************************
 Sending Email
 ***************************************************************/
$ok=mail($To, $Subject, $Body, $Headers);
echo $ok?"<h1> Mail Sent</h1>":"<h1> Mail not SEND</h1>";
?>
 
Ultima modifica di un moderatore:
ciao
è logico che devi crearti il form, con action ad una latra pagina o alla stessa se tutto in una.
dato che il form (credo) si trova su un tuo siro l'email devi inviarltela, quindi al posto di

$to = $_POST['to'];

scrivi

$to = "mi_indirizzo@mio_dominio.it";
comunque, ribadisco, butta via e usa phpmailler, abbi pazienza che domani te la spiego
 
@ borgo italia.

grazie mille per le numerose risposte, se puoi' spiegarmi anche come funzione phpmailer ti sarei grato mi interessa molto.

O appena guardato il link di alessandro, ma non capisco alcune cose e non riesco ad installarlo ...

Ps. lo script che ti ho postato funziona, solo che non capisco perchè non mi allega niente ... ;(

chissa cosa manca...

@ alessandro..

Sorry non sapevo che non si potevano postare gli script , cmq grazie anche a te..
 
ciao
la classe non va installata, ma semplicemente dizzipata copiata, meglio in una cartella (io l'ho chiamata come la classe)
poi nella pagina in cui vuoi usarla devi solo richiamarla ed istanziarla:

PHP:
//.....
require_once "phpmailler/class.phpmailer.php";//richiamo la classe
$messaggio = new PHPmailer();//la instanzio poi riempio tutti i suoi parametri che mi servono
//il nome della variabile $messaggio  può essere qualsiasi es $pinco_pallo, basto poi usare quello
 
dove va' messa questa classe ?!?!? è questo che non capisco fondamentalemtene ...

Devo metterla nel mio script !?!?!

oppure devo metterla da qualche altra parte .. ?!?!

io se apro cio che ho szippato trovo 4 cartelle con scritto ..

config docs js lib ....
 
ciao
cosa hai scaricato? non c'è quella roba.
comunque la classe, che non è altro che un file php, deve essere messa in una cartella (che come detto io ho chiamto per semplicità phpmailler).
nello zip di sorgeforce dovresti trovare i seguenti file
class.phpmailer.php
class.smtp.php (che serve se usi per spedire SMTP)
e una cartella per la scelta delle lingue
language
tutti i file sopra e la cartella li metti dentro la cartella phpmailler
ora ti faccio lo zip e poi lo posto
 
ecco perchè non funzionava ...

io l'ho scaricato almeno 5 volte ma ho sempre trovato quelle 4 cartelle che ti ho detto ..

dai dai se puoi postami lo zip cosi sicuramente il tutto diventa più facile ....
 
ok fatto .. mi ha creato una cartella phpmailer, con all'interno un'altra cartella phpmailer e i file che tu mi dicevi ....

ora che devo devo scrivere quello che mi hai postato prima dentro a class.phpmailer.php
 
dimmi cosa sbaglio se puoi ....

dimmi cosa sbaglio se puoi ,.. sto impazzendo , ormai è diventata una questione di principio ...

allora ho scaricato il file ..

e quindi ho una cartella con phpmailer/(all'interno class.phpmailer.php smtp... e language ...

a me serve solo class.phpmailer.php...

ora quindi il percorso è : phpmailer/class.phpmailer.php e quindi :

all'interno ( scusa l'ignoranza del solito script php che dovrebbe generare il tutto es tipo quello che avevo postato ho messo

include("phpmailer/class.phpmailer.php");

ma forse una cosa che non capisco è proprio questa )

andando per ordine...

carico sul server la cartella phpmailer con all'interno class.phpmailer.php , aggiungo al mio script include("phpmailer/class.phpmailer.php");

nel form creato in html , nell action =" ( metto es stefano.php )

lancio la pagina di prova si apre il form scrivo all'interno i dati invio , genera la url miosito/prova/stefano.php ma ho mi da pagina bianca o mi da erroe...

Ma in ogni caso la mail non arriva ... ;( che cavolo sbaglio ... scusami se ti rompo ma ormai è più forte di me , ho letto duemila tutor ma tutti scrivono la stessa cosa nessuno ha fatto una vera e propria guida che spiega passo passo che cavolo e dove bisogna mettere tutto .....

qual'è il passaggio errato ?!?!?!?
 
Ultima modifica:
ciao
deve essere successo qualcosa: è saltato il mio post dove ti spiegavo (non lo vedo più)
intanto alcune cose, non ti conviene fare due pagine una col form e una con l'invio, ma una stessa pagina.
se hai pazienza domattina riprova a riinviare il tutto
 
Saresti davvero cosi gentile ....

Magari grazie milleeeee ... Se nn e' un problema ricordati che mi serve almeno un allegato ... Poi il form eventualmente provo ad ampliarlo io con i campi che mi servono e se nn capisco ti chiedo .. Pero' l'allegato sta diventando un incubo ...

Attendo allora .. Grazie grazie grazie millleeeeee
 

Discussioni simili